TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2009年8月1日 星期六

C++ 的多緒安全性

簡單的說,因為標準給編譯器優化的限度太寬鬆,導致編譯器可以很大程度地調換指令的順序,因此 critical section 也有可能無法完全包好。不少人以為 volatile 可以禁止優化,從而確保正確順序,但其實它只保證單緒的順序,多緒的狀況還是無法保證;連鬼才 Andrei Alexandrescu 都在他的神作 Morden C++ Design 裡犯了這個錯誤(我也不認為他示範的 Singleton 真的有 thread-safe)。
也許等 C++0x(呃,可能會變成 C++1X) 釋出之後,可以帶給我們更複雜的 C++ 吧。XD

3 則留言:

  1. 再複雜下去我覺得會沒人想用 C++ 了 XD
    我學到現在的問題就是,到底是那種人會想學 C++ XD?

    回覆刪除
  2. Java 是它的 framework 很複雜, C++ 是自己就超複雜 XD

    回覆刪除
  3. 我剛學 C++ 之後學 Java ,一直有一種 Java 是玩具的錯覺 ... XD

    回覆刪除