如果我有一個關鍵部分,我必須實現一個鎖定它的方法。我看到了以下的變體:輪詢鎖是否實現關鍵部分的正確方法?
while(lock)
{
//do nothing
}
lock = true;
// code of critical section
lock = false;
然而,我懷疑它,因爲在理論上,幾個線程可以執行while(lock)
(檢查,看看它的= FALSE),並進入臨界區一起,因爲while(lock)
和lock = true;
不是在一個連續的塊中執行的。我錯了嗎?或者這確實是一種不安全的方法?
你需要一個鎖,所以使用一個鎖。 –