advacing lnux program --条件变量[copy]
摘要:
我们已经展示了如何在两个线程同时访问一个变量的时候利用互斥体进行保护,以及如何使用信号量实现共享的计数器。条件变量是GNU/Linux提供的第三种同步工具;利用它你可以在多线程环境下实现更复杂的条件控制。假设你要写一个永久循环的线程,每次循环的时候执行一些任务。不过这个线程循环需要被一个标志控制:只有当标志被设置的时候才运行,标志被清除的时候线程暂停。代码列表4.13显示了你可以通过在不断自旋(重复循环)以实现这一点。每次循环的时候,线程都检查这个标志是否被设置。因为有多个线程都要访问这个标志,我们使用一个互斥体保护它。这种实现虽然可能是正确的,但是效率不尽人意。当标志没有被设置的时候,线程会 阅读全文
posted @ 2013-02-03 21:37 michile 阅读(209) 评论(0) 推荐(0) 编辑