一本书讲透Java线程:原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5.3 mutex示例

接下来对本章开头的用例稍微进行改造,改造结果如代码清单1-16所示。代码开头采用静态赋值的方式定义了mutex互斥变量。在对total值修改之前调用pthread_mutex_lock函数来获取锁,然后进行total值的修改,之后调用pthread_mutex_unlock函数来释放锁对象。

代码清单1-16 mutex示例改造结果

上述代码通过加锁、数据修改、释放锁的逻辑实现了线程同步,确保在任意时刻只有一个线程能对total变量进行修改,代码运行的结果是2000000,符合程序预期。