互斥理解

时间:2016-11-09 05:04:44

标签: multithreading pthreads mutex

有人可以向我解释为什么这段代码不好:

$className

这没关系:

Child1

我是否总是需要全局声明互斥变量?

1 个答案:

答案 0 :(得分:0)

本地mutex的问题在于它只是mutex的本地可访问版本...因此当thread锁定mutex时为了共享一些全局可访问的数据,数据本身不受保护,因为每个其他thread将拥有可以锁定和解锁的本地mutex。它打败了互斥的整个过程。

我建议考虑异常安全。在此特定示例中,您只是在data++ mutex的中间执行lock/unlock。那么如果你将来在pthread_mutex_unlock(&m);之前放置另一个可以引发异常的声明呢?阅读RAII