• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            c++學(xué)習(xí)之---volatile和線程安全的singleton模式

            參考:http://www.cnblogs.com/rocketfan/archive/2009/12/05/1617759.html
            volatile:
            1.volatile的作用:
            (1) the content of a volatile variable is “unstable” (can change by means unknown to the compiler),

            (2) all writes to volatile data are “observable” so they must be executed religiously, and

            (3) all operations on volatile data are executed in the sequence in which they appear in the source code.
            1.被聲明為volatile的變量其內(nèi)容是不穩(wěn)定的(unstable),它的值有可能由編譯器所不能知曉的情況所改變。
            2.所有對聲明為volatile的變量的寫操作都是可見的,必須嚴(yán)格執(zhí)行be executed religiously。
            3.所有對聲明為volatile的變量的操作(讀寫)都必須嚴(yán)格按照源代碼的順序執(zhí)行。
            volatile確保每次直接從內(nèi)存讀取變量的值。java中的volatile是跨線程保證上述三個條件的,而C++只是單一線程內(nèi)保證。
            但是即使是JAVA能夠跨越線程保證,仍然是不夠的因為volatile和非volatile操作之間的順序仍然是未定義的,有可能產(chǎn)生問題,考慮下面的代碼:

            volatile int vi;

            void bar(void) {
            vi = 1;
            foo();
            vi = 0;
            }

            我們一般會認(rèn)為vi會在調(diào)用foo之前設(shè)置為1,調(diào)用完后會被置為0。然而編譯器不會對你保證這一點,它會很高興的將你的foo()移位,比如跑到vi = 1前面,只要它知道在foo()里不會涉及到其它的volatile操作。所以安全的方法是用柵欄memory barrier例如“asm volatile (”" ::: “memory”)加到foo的前面和后面 來保證嚴(yán)格的執(zhí)行順序。內(nèi)存屏障保證代碼執(zhí)行時嚴(yán)格按照源代碼的的順序。

            posted on 2011-03-09 11:47 MrRightLeft 閱讀(763) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            <2011年6月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            導(dǎo)航

            統(tǒng)計

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品成人无码久久久久久 | 久久99精品久久久久久野外| 国产激情久久久久久熟女老人| 欧美成a人片免费看久久| 一级做a爰片久久毛片16| 久久精品一区二区| 国内精品久久久久影院网站| 久久发布国产伦子伦精品| 99久久久国产精品免费无卡顿| 久久w5ww成w人免费| 日本精品久久久久中文字幕8| 青青国产成人久久91网| 久久亚洲AV永久无码精品| 亚洲va久久久久| 久久精品国产亚洲AV麻豆网站 | 久久99精品国产麻豆| 国产亚洲精品美女久久久| 狠狠色丁香婷婷综合久久来| 久久精品国产91久久麻豆自制 | 日本久久久久久久久久| 亚洲国产精品综合久久一线| 99久久国产宗和精品1上映| 久久国产亚洲精品无码| 久久99热只有频精品8| 嫩草伊人久久精品少妇AV| 久久久久久久综合日本亚洲| 久久99精品国产麻豆蜜芽| 麻豆av久久av盛宴av| 久久精品99久久香蕉国产色戒| 国内精品久久久久国产盗摄| 久久久久av无码免费网| 青草影院天堂男人久久| 久久精品国产男包| 精品久久国产一区二区三区香蕉 | 偷偷做久久久久网站| 久久国产精品无码HDAV | 久久国产乱子精品免费女| 久久久国产亚洲精品| 99久久国产主播综合精品| 亚洲综合熟女久久久30p| 欧美久久一级内射wwwwww.|