有:
一个条件变量“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 用作二进制信号量?
.
非常感谢!