读书人

linux c 多线程 生产者-消费者

发布时间: 2012-12-20 09:53:21 作者: rapoo

linux c 多线程 生产者--消费者

linux 线程同步机制和java的是极其类似的。如果不太明白java多线程编程,可以参考我原先写的java多线程编程。下面我们将展现linux下如何实现生产者和消费者模型。

?

直接上代码吧:

?#ifndef _LIST_H_

?List的具体实现。

?

?这个是具体的模型实现,特别注意的是produce和consume方法里面,我注释了,加锁的正确位置和错误位置。如果加锁的位置在错误位置会引起死锁,具体方法,还是用“颜色”分析方法。

首先cosumer进行wait,使其在mutex上进入等待队列,线程切换到produce线程上面执行,然后produce释放锁,consumer居然又要lock mutex,所以互斥,consumer线程就死了,然后produce循环过来,也要lock mutex,所以produce线程也死了。就这样,正确lock mutex位置在文中进行了标注。

读书人网 >UNIXLINUX

热点推荐