第2章嵌入式Linux开发基础讲解.ppt

第2章嵌入式Linux开发基础讲解

2.5.3 线程的访问控制 多个线程阻塞在此条件变量上时,哪一个线程被唤醒是由线程的调度策略所决定的。 注意,必须用保护条件变量的互斥锁来保护这个函数,否则条件满足信号y有可能在测试条件和调用pthread_cond_wait函数之间被发出,从而造成无限制的等待。 cond.c是使用条件变量实现线程同步的一个简单的例子。 3、信号量 互斥锁主要是用来实现多线程多任务的互斥,一个线程占用了某一个独占资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。 而信号量更多用来处理多线程之间的同步,用它来控制对公共资源的访问。当公共资源增加时,增加信号量。使用后,减少信号量。 只有当信号量值大于0时,才能使用公共资源。 这里的公共资源,也可以一些计算或者数据处理。 信号量也称为信号灯,本质上是一个非负的整数计数器。 2.5.3 线程的访问控制 信号灯与互斥锁和条件变量的主要不同在于”灯”的概念. 灯亮则意味着资源可用,灯灭则意味着不可用。 互斥锁的同步方式侧重于”等待”操作,即资源不可用;信号灯机制则侧重于点灯,即告知资源可用。 信号灯的应用除了灯亮/灯灭这种二元灯以外,也可以采用大于1的灯数,以表示资源数大于1,这时可以称之为多元灯。 2.5.3 线程的访问控制 (1)信号量的创建 所需头文件:#include semaphore.h (信号量函数都

文档评论(0)

1亿VIP精品文档

相关文档