在論文http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm中提出了一種算法,該算法在本地靜態變量的初始化期間不需要保持鎖定,但仍然導致通過變量定義的併發控制流等待直到初始化完成。本地靜態初始化沒有保持鎖定可以避免C++ 11中可能出現死鎖?
本文說,這具有避免可能的死鎖
的核心問題與功能局部靜態持續時間的對象初始化,含功能可以同時調用的優點,並且因此定義可以同時執行。未能同步可能會引入競爭條件。顯而易見的解決方案是同步。問題是,如果同步涉及在初始化器執行時持有鎖,則此類同步可能會導致死鎖。
有人可以請舉一個例子來說明上述死鎖發生在哪裏嗎?
啊,這是有道理的。該文件還說,GCC使用那種容易出現死鎖的算法。鏈接的答案證明它。謝謝。 –
這個答案剛剛投了兩次票。任何人都在關心精心製作?或者它只是一個隨機的,無意義的驅動器?我正在提供準確的信息。我相信這個答案是準確的。如果需要闡述,請詢問。或者至少在這裏留下一個評論,並說明反對票的理由。 –
幾個小時前,有人在我的一些答案/問題上有一些downvote的樂趣:http://img40.imageshack.us/img40/5457/snapshot96.png。也許這是同一個用戶?如果系統認爲它是辱罵性的,那麼它就不會計入那些低估。 –