The True Meaning of Const in C 11 for Thread-Safety
Does const mean thread-safe in C 11?
In a limited sense, yes. The Standard Library expects operations on const objects to be thread-safe, meaning it won't induce data races. However, this is a contract that can be broken, leading to undefined behavior.
Equivalence to Java's synchronized?
No. Unlike synchronized, which enforces exclusive access, const only indicates the expectation of thread-safety. Internal synchronization must be implemented explicitly.
Understanding const for Thread-Safety
Example: Thread-Safe Area Calculation
To ensure thread-safety in a rect class with area caching, one must internally synchronize write operations, even within a const function. This honors the contract with the Standard Library.
Keyword Scarcity in C
Yes, C has a limited number of keywords. This has been a known limitation since its inception.
Conclusion
While const somewhat implies thread-safety when used with the Standard Library, it's crucial to understand its limitations and ensure proper synchronization for truly thread-safe code. The scarcity of keywords in C has historically constrained its expressive power.
The above is the detailed content of Is `const` in C 11 Enough to Guarantee Thread Safety?. For more information, please follow other related articles on the PHP Chinese website!