4、 C++函数内的静态变量初始化以及线程安全问题

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

1. 如果是编译时和加载时初始化, 是不会存在线程安全这个issue的;

因为这两种初始化一定发生在Main函数执行之前, 这个时候尚未进入程序运行空间; 而这些初始化一定是在单线程环境下操作的! -- 都是在执行C Runtime的startup代码中的void mainCRTStartup(void)函数时所在的OS系统加载程序时的主线程空间上发生的!

2. 如果是运行时初始化, 因为无法保证访问这个静态变量所在的局部函数/全局函数/类成员函数/类静态成员函数 一定只会从某个特定的线程中被访问, 因此, 就一定会存在"线程安全"的issue!

怎么避免:加锁解锁。