• <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++學習之---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的變量的寫操作都是可見的,必須嚴格執(zhí)行be executed religiously。
            3.所有對聲明為volatile的變量的操作(讀寫)都必須嚴格按照源代碼的順序執(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;
            }

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

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

            <2011年3月>
            272812345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統(tǒng)計

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲AⅤ优女AV综合久久久| 精品久久久久久国产91| 久久亚洲天堂| 亚洲精品无码久久久久久| 国产精品久久久久jk制服| 7国产欧美日韩综合天堂中文久久久久| 亚洲国产精品久久久久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 久久国产美女免费观看精品| 97精品依人久久久大香线蕉97| 国产成人久久激情91| 久久亚洲AV无码精品色午夜麻豆| 99麻豆久久久国产精品免费| 亚洲精品无码久久毛片| 国产精品99久久久久久人| 久久精品国产日本波多野结衣| 久久精品国产亚洲麻豆| 久久亚洲AV成人无码国产| 日日狠狠久久偷偷色综合免费| 国产情侣久久久久aⅴ免费| 伊人久久大香线蕉综合5g| 久久精品国产亚洲网站| 久久久久久亚洲Av无码精品专口| 欧美日韩精品久久久久| 精品久久久久久国产免费了| 国内精品久久久人妻中文字幕| AV无码久久久久不卡蜜桃| 中文成人无码精品久久久不卡| 久久精品亚洲精品国产欧美| 国产成人无码精品久久久免费| 久久777国产线看观看精品| 精品蜜臀久久久久99网站| 欧美喷潮久久久XXXXx| 99久久精品国产一区二区| 精品伊人久久久| 精品久久久久久无码不卡| 久久99精品久久久大学生| 亚洲AV日韩AV天堂久久| 国产亚洲精品久久久久秋霞| 色诱久久久久综合网ywww| 97久久国产综合精品女不卡|