• <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的變量其內容是不穩定的(unstable),它的值有可能由編譯器所不能知曉的情況所改變。
            2.所有對聲明為volatile的變量的寫操作都是可見的,必須嚴格執行be executed religiously。
            3.所有對聲明為volatile的變量的操作(讀寫)都必須嚴格按照源代碼的順序執行。
            volatile確保每次直接從內存讀取變量的值。java中的volatile是跨線程保證上述三個條件的,而C++只是單一線程內保證。
            但是即使是JAVA能夠跨越線程保證,仍然是不夠的因為volatile和非volatile操作之間的順序仍然是未定義的,有可能產生問題,考慮下面的代碼:

            volatile int vi;

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

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

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

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

            導航

            統計

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品夜色噜噜亚洲A∨ | 狠狠色丁香久久婷婷综合蜜芽五月| 久久综合给久久狠狠97色| 国产综合成人久久大片91| 久久久久亚洲Av无码专| 99久久精品免费看国产一区二区三区| 久久精品国产亚洲一区二区三区| 久久电影网2021| 很黄很污的网站久久mimi色| 国产精品成人无码久久久久久| 久久99精品九九九久久婷婷| 99久久夜色精品国产网站| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 思思久久99热只有频精品66| 久久亚洲中文字幕精品一区四| 久久久久国产一区二区| 午夜福利91久久福利| 亚洲精品乱码久久久久久中文字幕| 人妻精品久久无码专区精东影业| 久久精品中文騷妇女内射| 曰曰摸天天摸人人看久久久| 久久影院午夜理论片无码| 97精品依人久久久大香线蕉97| 精品国产乱码久久久久久1区2区| 99久久免费国产精品热| 久久免费大片| 久久精品中文闷骚内射| 国产精品免费久久久久影院| 99久久国产亚洲综合精品| 久久99国产精一区二区三区| 久久夜色精品国产| 久久精品无码专区免费东京热| 久久免费线看线看| 久久久久亚洲国产| 91精品国产91久久久久久蜜臀| 亚洲日韩欧美一区久久久久我| 99国产欧美精品久久久蜜芽| 久久天天躁狠狠躁夜夜2020老熟妇| 一本色综合网久久| 青青草原综合久久| 久久国产精品无码一区二区三区|