设为首页 加入收藏

TOP

Linux C 线程同步实例分析
2014-11-24 11:20:27 来源: 作者: 【 】 浏览:0
Tags:Linux 线程 同步 实例分析

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


简单的生产者 消费者模型


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


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


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Ubuntu 10.04下imote2交叉编译链.. 下一篇底层之旅 —— Linux下的I2c体系..

评论

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

·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)
·想要自学数据分析, (2025-12-27 02:49:14)
·Java 集合框架 - 菜 (2025-12-27 02:19:36)
·Java集合框架最全详 (2025-12-27 02:19:33)