I wonder a few things.
How many out there write lots of multi-threaded code? If so, why; if not, why?
For those of you that do, is there a set of standard guidelines and practices that you follow? Are they public (e.g. a white-paper, book)? How much experience do you have with them? Any emperical evidence that they are better than nothing (or even another set of guidelines)?
For those practices, do you have tools to support development consistent with those practices (e.g. static analysis, dynamic analysis)? Are they commercial or homegrown? How do you protect against race conditions? How do you protect against deadlocks? Does your locking protocol employ specific rigorous engineering practices, such as using lock hierarchies/leveling, avoidance of dynamic dispatch under a lock, etc.?
Do you do user-mode scheduling? How? (E.g. fibers?)
Do you use our ThreadPool, or did you decide to roll your own? Why?
Are you a Monitor.Enter/Exit or a Win32 kind of guy or gal? Same goes for Monitor.Wait/Pulse/PulseAll and EventWaitHandle. Was this choice based on any data, or was it simply what you're most comfortable with?
There are just some of the things I wonder. Any answers to any questions would be super-cool.