Sending message from working non-gui thread to the main window
I'm using WinApi.
Is SendMessage/PostMessage a good, thread safe method of communicating with the main window? Suppose, the working thread is creating a bitmap, that must be displayed on the screen. The working thread allocates a bitmap, sends a message with a pointer to this bitmap and waits until GUI thread processes it (for exam开发者_运维知识库ple using SendMessage). The working thread shares no data with other threads.
Am I running into troubles with such design?
Are there any other possibilities that do not introduce thread synchronizing, locking etc. ?
This is a decent method of thread synchronisation, and should be fine, so long as you're careful that:
- either the main thread keeps the bitmap and the worker thread starts a new one, or vice versa, so that after SendMessage returns only one thread has access to the bitmap.
- you don't accidentally change the SendMessage to a PostMessage later, forgetting that it is providing your synchronisation as well as the inter-thread communication.
精彩评论