我有一個關於互斥鎖和pthread的問題。如何使用pthread互斥處理共享資源
如果有共享標誌,我們稱之爲(F1)。並且有多個線程。 但是隻有一個線程(T1)可以提升/停止標誌,而所有其他線程(T2..Tn)只能讀取或拉取狀態。
如果T1使用mutex_lock/mutex_unlock標誌F1將被設置爲新值時,這足夠了嗎? 所有其他線程是否也應該使用mutex_lock/mutex_unlock,即使它們只是從F1讀取狀態?
Exemple1:
T1()
{
while(Running)
{
pthread_mutex_lock(&lock);
F1 = true;
pthread_mutex_unlock(&lock);
}
}
T2()
{
while(Running)
{
if(F1) {
/* Do something */
}
}
}
Exemple2:
T1()
{
while(Running)
{
pthread_mutex_lock(&lock);
F1 = true;
pthread_mutex_unlock(&lock);
}
}
T2()
{
while(Running)
{
pthread_mutex_lock(&lock);
if(F1) {
/* Do something */
}
pthread_mutex_unlock(&lock);
}
}