I know that in .Net all 32-bit types (e.g, int, bool, etc) are thread safe. That is, there won’t be a partial write (according to the specifications).
But, does the same apply for int? (nullable int)?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The question is poorly worded, and hence the confusion in the answers so far. The question should be “are reads and writes to a variable of type int? guaranteed to be atomic?”
No, absolutely not. The spec is extremely clear on this point:
It is entirely possible for a thread to read a partially written value from a shared-memory variable of nullable type.
For example, suppose you have an int? variable x which at present has the value null. It therefore contains an int, set to zero, and a bool, set to false. Now on another thread you write the nullable int “5” to x. It is perfectly legal for another thread to read the non-nullable int zero from x, because the “true” in the bool could be set before the 5 is set to the int.