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位置在文中进行了标注。