If you are concerned about the performance difference between thread messages and kernel events, you probably shouldn't use threading messages.
Win32 thread message queues is a mechanism developed for Windows 16 when there were no threads. They grew up to handle the Win32 screw model, but under covers they are quite complex animals.
pro con. - , , . , Windows (MessageBox, DoDragDrop ..) - , . API- , . ** 1 * , , API- (GetMessage) ( QueueUserAPC).
' - - , . , , , - .
** 1 * , ASSERT, .