91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中使用volatile有什么作用

發布時間:2021-11-25 14:03:39 來源:億速云 閱讀:155 作者:iii 欄目:大數據

本篇內容主要講解“C++中使用volatile有什么作用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++中使用volatile有什么作用”吧!

CP.200:使用volatile只能表明該變量是非C++內存

Reason(原因)

volatile is used to refer to objects that are shared with "non-C++" code or hardware that does not follow the C++ memory model.

volatile用于表明參照的對象需要和非C++代碼或硬件共享而遵守C++內存模型。

Example(示例)

const volatile long clock;

這段代碼描述一個不斷被時鐘電路更新的寄存器。clock被定義為volatile是因為它的值在使用它的C++程序沒有任何動作的情況下被修改。例如,兩次讀取clock經常可以得到不同的值,因此優化器最好不要優化掉這段代碼中的第二個讀操作。

long t1 = clock;
// ... no use of clock here ...
long t2 = clock;

clock is const because the program should not try to write to clock.

clock定義為常量是為了表明程序不應該對clock進行寫操作。

Note(注意)

Unless you are writing the lowest level code manipulating hardware directly, consider volatile an esoteric feature that is best avoided.

除非你正在編寫直接操作硬件的低層次代碼,否則將volatile作為冷門功能并最好避免使用。

Example(示例)

Usually C++ code receives volatile memory that is owned elsewhere (hardware or another language):

通常情況下,C++代碼接受有其他某處擁有的volatile內存(硬件或其他語言):

int volatile* vi = get_hardware_memory_location();
   // note: we get a pointer to someone else's memory here
   // volatile says "treat this with extra respect"

某些C++代碼會分配volatile內存并通過故意泄露指針的方式和其他部分共享(硬件或其他語言)它。

static volatile long vl;
please_use_this(&vl);   // escape a reference to this to "elsewhere" (not C++)
Example, bad(反面示例)

volatile類型的局部變量幾乎一定是錯的--如果它們只能短期存在,怎么能分享給其他語言或硬件呢?由于同樣的原因,該原則也幾乎一定適用于成員變量。

void f()
{
   volatile int i = 0; // bad, volatile local variable
   // etc.
}

class My_type {
   volatile int i = 0; // suspicious, volatile member variable
   // etc.
};
Note(注意)

In C++, unlike in some other languages, volatile has nothing to do with synchronization.

和其他語言不同,在C++中不會為同步做任何事情。

Enforcement(實施建議)
  • Flag volatile T local and member variables; almost certainly you intended to use atomic<T> instead.

  • 標記volatile類型的局部變量和成員變量;幾乎可以肯定的說你想用的其實是atomatic<T>。

到此,相信大家對“C++中使用volatile有什么作用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南川市| 济源市| 雅安市| 枣强县| 赤水市| 井研县| 松阳县| 聂拉木县| 定陶县| 汤原县| 韶山市| 扬中市| 博罗县| 天全县| 仁寿县| 辽源市| 镇赉县| 金乡县| 鄯善县| 花莲县| 金平| 牡丹江市| 宜春市| 庆安县| 嘉黎县| 云阳县| 翼城县| 富顺县| 建瓯市| 通渭县| 蒙山县| 宁安市| 鄯善县| 阳原县| 峨眉山市| 休宁县| 石林| 清丰县| 九台市| 和龙市| 翁源县|