【发布时间】:2012-04-26 03:39:35
【问题描述】:
有:
一个条件变量“var”:var的值只能是0或1;
一个提供者线程“thP”:从网络接收到数据时,设置var 1(可用);
一个消费者线程“thC”:等待() for var。得到 var 后,将其设置为 0(不可用),然后处理。
.
我找到了两种方法来实现这个简单的模型:
(1) 使用 pthread_cond_t 作为 var。 这个方法需要一个额外的互斥锁和一个回调函数来解锁互斥锁,同时线程将被清理。
(2) 使用 sem_t 作为 var。 这种方法可能会导致“var>1”的情况。 thC 可能会执行多个 wait() 操作来将 var 的值减小到 1。
.
问题是:
要实现这个简单的模型“单一提供者,单一消费者,一个条件变量”,我应该为 var、pthread_cond_t、sem_t 使用哪种类型,还是简单地将 pthread_mutex_t 用作二进制信号量?
.
非常感谢!
【问题讨论】:
标签: linux pthreads conditional semaphore producer-consumer