4、 C++函數內的靜態變量初始化以及線程安全問題


原文:https://www.cnblogs.com/zxjan/p/3538911.html

1. 如果是編譯時和加載時初始化, 是不會存在線程安全這個issue的;  

       因為這兩種初始化一定發生在Main函數執行之前, 這個時候尚未進入程序運行空間; 而這些初始化一定是在單線程環境下操作的!  --  都是在執行C Runtime的startup代碼中的void mainCRTStartup(void)函數時所在的OS系統加載程序時的主線程空間上發生的!

2. 如果是運行時初始化, 因為無法保證訪問這個靜態變量所在的局部函數/全局函數/類成員函數/類靜態成員函數  一定只會從某個特定的線程中被訪問, 因此, 就一定會存在"線程安全"的issue!

 

 

怎么避免:加鎖解鎖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM