title: What is non-thread-safety for?
body: <p>There are a lot of articles and discussions explaining why it is good to build thread-safe classes. It is said that if multiple threads access e.g. a field at the same time, there can only be some bad consequences. So, what is the point of keeping <strong>non</strong> thread-safe code? I'm focusing mostly on .NET, but I believe the main reasons are not language-dependent.</p>
  
  <p>E.g. .NET static fields are not thread-safe. What would be the result <em>if they were</em> thread-safe by default? (without a need to perform "manual" locking). What are the benefits of using (actually defaulting to) non-thread-safety? </p>
  
  <p>One thing that comes to my mind is performance (more of a guess, though). It's rather intuitive that, when a function or field doesn't need to be thread-safe, it shouldn't be. However, the question is: what for? Is thread-safety just an additional amount of code you always need to implement? In what scenarios can I be 100% sure that e.g. a field won't be used by two threads at once?</p>