![](/img/trans.png)
[英]Can I safely write a constant value to a variable from multiple threads in C++?
[英]Access static constant variable from multiple threads in C
我在Linux(C / C ++和POSIX線程)下有多線程編程的經驗,但是最明顯的情況有時非常復雜。
我的代碼中有幾個靜態常量變量(全局和函數本地),我可以在不使用互斥鎖的情況下從多個線程同時訪問它們嗎? 因為我不修改它們應該沒問題,但總是更好問。
我必須進行高速優化,因此即使像互斥鎖一樣快速操作對我來說也是非常昂貴的,特別是因為我的應用程序將從長循環中訪問這些變量。
如果你只在一個線程上初始化它們然后再也不修改它們,那么可以在沒有互斥體等的情況下從多個線程同時讀取它們。
如果您只是閱讀而不是修改,則不需要任何鎖定
我不知道其他架構,但是intel保證所有讀取都是原子的,但是,如果你想添加一些,請使用類似value = atomic_add(&variable,0);
,這將強制所有寫入然后將0添加到該值然后返回舊值,該值不會被更改
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.