我的问题是关于获取互斥锁的线程。
我们使用pthread_mutex_t
锁来确保在多线程程序中读/写时对变量的顺序访问。但pthread_mutex_t lock ;
也是线程之间共享的全局变量。访问此全局变量(锁)是否与访问其他全局变量相同?如果它是相同的,那么我们不会面对我们将面对其他全局变量的相同的问题吗?如果没有,那么如何访问与访问其他全局变量不同的锁数据结构?
简而言之:为什么我们不需要锁定自己的锁,最终导致鸡蛋问题?
答案 0 :(得分:3)
您并不真正直接访问pthread_mutex_t
个变量,您可以使用某些给定的函数(例如pthread_mutex_lock
)访问它们。
构建这些函数,以便通过使用一些测试和设置指令(http://en.wikipedia.org/wiki/Test-and-set)或使用代码的某些原子部分({{3}),无法同时访问这些结构。 })。