簡單的說,因為標準給編譯器優化的限度太寬鬆,導致編譯器可以很大程度地調換指令的順序,因此 critical section 也有可能無法完全包好。不少人以為 volatile 可以禁止優化,從而確保正確順序,但其實它只保證單緒的順序,多緒的狀況還是無法保證;連鬼才 Andrei Alexandrescu 都在他的神作 Morden C++ Design 裡犯了這個錯誤(我也不認為他示範的 Singleton 真的有 thread-safe)。
也許等 C++0x(呃,可能會變成 C++1X) 釋出之後,可以帶給我們更複雜的 C++ 吧。XD
也許等 C++0x(呃,可能會變成 C++1X) 釋出之後,可以帶給我們更複雜的 C++ 吧。XD
再複雜下去我覺得會沒人想用 C++ 了 XD
回覆刪除我學到現在的問題就是,到底是那種人會想學 C++ XD?
Java 是它的 framework 很複雜, C++ 是自己就超複雜 XD
回覆刪除我剛學 C++ 之後學 Java ,一直有一種 Java 是玩具的錯覺 ... XD
回覆刪除