2
假設我有一些鍋爐板多線程代碼,例如:如下。我想知道有什麼保證(如果有)使用該代碼的多個線程將始終看到當前版本的狀態。我知道C++對內存模型保證很少,而且我認爲我在某處甚至可以聲明狀態變量可能沒有幫助。然而在實踐中,人們高興地使用boost :: thread,並且它的文檔沒有帶有一個大的警告,指出互斥體沒有用,除非你只使用外部狀態:-)我假設在幕後必須有一些提升的魔法,或者我應該每次做任何事情時都調用__sync_synchronize()?boost ::線程和內存模型
class Blah {
typedef (some horribly complex data structure) State;
State state;
boost::mutex m;
(...)
void use()
{
boost::lock_guard<boost::mutex> dummy (m);
(do something to state, being especially careful to maintain invariants)
}
};
這裏記錄了pthread,這對我來說已經足夠了:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_11非常感謝您的回覆。 – Joe