2010-04-01 114 views
1

我正在使用WinApi。从工作非gui线程发送消息到主窗口

SendMessage/PostMessage是一种与主窗口进行通信的良好线程安全方法吗? 假设工作线程正在创建一个位图,该位图必须显示在屏幕上。工作线程分配一个位图,发送一个指向这个位图的消息,并等待GUI线程处理它(例如使用SendMessage)。工作线程与其他线程不共享数据。

我会遇到这种设计的麻烦吗?

有没有其他的可能性,不会引入线程同步,锁定等?

回答

2

这是线程同步的体面方法,而应该是罚款,只要你小心:

  • 无论是主线程保持位图和工作线程启动一个新的,或反之亦然,这样在SendMessage返回后,只有一个线程可以访问位图。
  • 之后您不会意外更改SendMessage到PostMessage,忘记它提供了同步以及线程间通信。