有人可以向我解释为什么这段代码不好:
$className
这没关系:
Child1
我是否总是需要全局声明互斥变量?
答案 0 :(得分:0)
本地mutex
的问题在于它只是mutex
的本地可访问版本...因此当thread
锁定mutex
时为了共享一些全局可访问的数据,数据本身不受保护,因为每个其他thread
将拥有可以锁定和解锁的本地mutex
。它打败了互斥的整个过程。
我建议考虑异常安全。在此特定示例中,您只是在data++
mutex
的中间执行lock/unlock
。那么如果你将来在pthread_mutex_unlock(&m);
之前放置另一个可以引发异常的声明呢?阅读RAII。