Let CCriticalSection use the template class as a member instead of a base class, to allow a wider range of data types to be used
Added CComInterface base class as a common interface for all objects that can receive messages
Added a mutex locker class for RAII exception-safe mutex locking
Use the MutexLocker everywhere; added a method to CComInterface for delivering received messages
Made the CMutex::lock and CMutex::unlock methods private, to make sure there is no code that accesses it directly (which could be exception-unsafe)
Created a CComLink::CNoDataAvailable exception, to allow the comlink thread to recognize when no data is available for reading
small bugfixes
Use the comlink thread functionality to simplify the amikocomlink test code
Replaced the semaphore wait timeout exception with a return value, since it's usually something you want to ignore
Removed unused commanager class; rewritten main code to some sort of message echoeing app
Added virtual destructors
Added comlink state tracking
Added exception handling for the comlink thread
Added some class documentation
Added application-level Amiko class