views:

38

answers:

1

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 example 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. ?

+2  A: 

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.
Andy Mortimer