的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