Thread-Safe Initialization of Local Static Variables in C 11
Concerns have been raised regarding the thread-safe initialization of local static variables in C and its evolution across different standards. Let's address this specifically in the context of C 11.
C 11 Standard
The C 11 standard (not the draft) in Section 6.7 specifies that:
Therefore, in C 11, the thread-safe initialization of local static variables is finalized.
Popular Compilers Implementation
Major compilers, such as:
have properly implemented the thread-safe initialization behavior required by the C 11 standard. This ensures that the constructor of a local static variable like lg in the example is guaranteed to run only once, even in a multithreaded environment.
Additional Considerations
It's important to note that the thread-safe initialization only applies to the initialization of the variable itself. Subsequent accesses to the variable through a reference are not guaranteed to be thread-safe unless additional synchronization mechanisms are employed.
The above is the detailed content of How Does C 11 Guarantee Thread-Safe Initialization of Local Static Variables?. For more information, please follow other related articles on the PHP Chinese website!