I just read Ian Griffiths's post C# 'lock' keyword and JIT hacks which is commenting on Joe Duffy's article regarding Atomicity & Asynchronous Exception Failures. If you are interested in multithreading, code that spans application domains and how to ensure atomicity of operations but also their pairing, you need to have a read.