Monday, April 03, 2006

Multithreading is hard...

Getting multithreaded apps right is pretty hard and get it right in dotnet is no exception. Found these links helpful to track down bugs which repro'ed once in a week or two under stress (on multiproc machines).
  1. http://discuss.develop.com/archives/wa.exe?A2=ind0203a&L=dotnet&D=0&T=0&P=53182
  2. http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-toolbox_p.html -> Explains with java but explains the notion of a memory barrier well.
  3. http://discuss.develop.com/archives/wa.exe?A2=ind0203B&L=DOTNET&P=R375
  4. http://msdn.microsoft.com/msdnmag/issues/05/10/MemoryModels/default.aspx
  5. http://msdn.microsoft.com/msdnmag/issues/05/08/Concurrency/
  6. http://www.ecma-international.org/publications/standards/Ecma-335.htm -> The ecma spec on the memory model
  7. http://www.yoda.arachsys.com/csharp/threads/resources.shtml
  8. http://blogs.msdn.com/cbrumme/archive/2003/05/17/51445.aspx
If these articles don’t give you a headache, probably nothing will :)