2011-09-23 51 views
0

例如我有一個資源鎖。 因此,一個多線程函數檢查它是否在訪問資源前設置,那麼如果它沒有設置它多線程的基本問題

在檢查和設置之間是否存在一個小的可能性,另一個線程會設置相同的鎖?

+0

感謝您的所有答案 – sabof

回答

1

取決於你想如何工作。請閱讀手冊頁mutex_lock。在這種情況下,檢查鎖是否被設置是多餘的,因爲設置的行爲,互斥體會暫停線程,直到互斥體可用(並且因此任何類型的代碼變得不必要)。

1

您不首先檢查鎖的狀態,然後獲取它。你所做的只是獲得它,指明你不想阻止或等待它。如果該鎖由另一個線程保存,該調用將立即失敗。 「鎖獲取」調用是作爲一個原子操作來實現的。

許多實現提供了一個特定的功能,實現了我上面描述的功能。