簡體   English   中英

具有多個線程和互斥鎖的競爭狀況

[英]Race condition with multiple threads and mutex locks

int iGlobe = 0;
...
void thread1Func()
{
  Lock(&Mutex1);
  if(iGlobe == 0)         //step-1
    someaction();
}
...
void thread2Func()
{
  Lock(&Mutex2);
  iGlobe = 5;             //step-2
}

假設,

1)線程1執行步驟1並進入睡眠狀態

2)同時,Thread2執行步驟2並更改iGlobe的值

如何克服這種情況?

對給定數據的所有訪問都必須在同一個互斥鎖上進行同步,否則不會產生“互斥”效應。 因此,要修復您的代碼,請將thread2Func更改為Lock(&Mutex1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM