ATL Critical Sections

ATL has the CComCriticalSection class, which wraps the native Win32 CS calls. CComAutoCriticalSection is a slightly more convenient variation of it. These are used by the ATL Threading Models, but can be used outside this context.

CComFakeCriticalSection is an empty implementation, which can be swapped in to turn off the critical section with minimal code change.