第 2 部分
称作互斥对象的小玩意
作者:Daniel Robbins
内容:
互斥我吧!
解读一下
为什么要用互斥对象?
线程内幕 1
线程内幕 2
许多互斥对象
使用调用:初始化
使用调用:锁定
等待条件发生
参考资料
关于作者
POSIX 线程是提高代码响应和性能的有力手段。在此三部分系列文章的第二篇中,Daniel Robbins 将说明,如何使用被称为互斥对象的灵巧小玩意,来保护线程代码中共享数据结构的完整性。
互斥我吧!
在前一篇文章中,谈到了会导致异常结果的线程代码。两个线程分别对同一个全局变量进行了二十次加一。变量的值最后应该是 40,但最终值却是 21。这是怎么回事呢?因为一个线程不停地“取消”了另一个线程执行的加一操作,所以产生这个问题。现在让我们来查看改正后的代码,它使用互斥对象(mutex)来解决该问题:
thread3.c