Linux C 线程同步实例分析

2014-11-24 11:20:27 ? 作者: ? 浏览: 1

先举出一个同步的经典例子,生产者消费者. 让我感到欣慰的是在这个代码中,我看到了《OS原理》中PV原语的实现,挺激动的。


简单的生产者 消费者模型


上面的是一个很正规的实现,体现不出多个线程同时违规访问临界资源的危险性,为了体现出不使用或者错误使用信号量,而导致多个线程同时访问临界资源所产生的后果,我修改了一下程序:


把该代码运行一下,你就会看到,除第一次外,都是先输出“Thread 1 input message>>”,然后输出的是另一个进程的"Pthread 2 produce item is >>.."


可见,由于两个线程可以同时访问临界资源,从而导致程序执行顺序的混乱。还要考虑到另外一点,这两个线程都是等待
我们从键盘输入,所以一次只有一个线程获得数据然后写入,但是如果这两个线程是从文件中读取数据的话,临界资源的
内容就会混乱,从而导致程序运行错误,出现的结果会令人意想不到。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: