![一本书讲透Java线程:原理与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/887/51145887/b_51145887.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.5.3 mutex示例
接下来对本章开头的用例稍微进行改造,改造结果如代码清单1-16所示。代码开头采用静态赋值的方式定义了mutex互斥变量。在对total值修改之前调用pthread_mutex_lock函数来获取锁,然后进行total值的修改,之后调用pthread_mutex_unlock函数来释放锁对象。
代码清单1-16 mutex示例改造结果
![](https://epubservercos.yuewen.com/DEC20B/30156599704620806/epubprivate/OEBPS/Images/35_03.jpg?sign=1739038847-iGEtM7TrqwZgeyAeGUmKjyopWWZJXSmK-0-8913f15fc59daf8a6de92a70c8458551)
![](https://epubservercos.yuewen.com/DEC20B/30156599704620806/epubprivate/OEBPS/Images/36_01.jpg?sign=1739038847-D0GnZyH3hNDxC7zmS2SKomglah9CYNEU-0-a664051484a27e58d7be3259803602cb)
上述代码通过加锁、数据修改、释放锁的逻辑实现了线程同步,确保在任意时刻只有一个线程能对total变量进行修改,代码运行的结果是2000000,符合程序预期。