簡體   English   中英

從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM