的ThreadA通过这个片段是否调用pthread_mutex_lock有之前发生的语义
{
global_a = 100; // 1
{
pthread_mutex_lock(&b_mutex)
...
pthread_mutex_unlock(&b_mutex)
} // 2
}
threadB通过这个片段
{
{
pthread_mutex_lock(&b_mutex)
...
pthread_mutex_unlock(&b_mutex)
} // 3
int tmp = global_a; // 4
}
,并假设从观察者观看确实执行顺序
- threadA --- 1
- threadA --- 2
- threadB --- 3
- threadB --- 4
可以在threadB "int tmp = global_a;"
代码中看到什么的ThreadA设定在"global_a = 100;"
?
任何建议是值得欢迎的。
证明是伟大的,但如果是这样定义的**之前发生**和** ** transitiviy通过**的之前发生**与'pthread_mutex_lock'和'pthread_mutex_unlock'?我有谷歌,但没有。你能告诉我一些关于它的参考吗? – Alex
我在我的答案中添加了一些参考。 POSIX没有定义*发生前*期限,但它可以根据内存顺序保证来定义。 – Tsyvarev