Win32 windows线程安全吗?



我想在一个线程上创建一个窗口,然后将该HWND迁移到将在其上执行的任意数量的线程中的一个。我的程序将有多个这样的窗口。这是可能的还是Win32 API不是为此设计的?

是的,在某种程度上。

您可以从任何线程向HWND发送和发布消息。

http://msdn.microsoft.com/en-us/library/ms644944 (v = VS.85) . aspx

试图从另一个线程配置UI(例如添加控件)将以糟糕的方式结束。但是,如果您向窗口发送消息,则可以确保该消息将在创建线程上处理。

不,这不可能。窗口用于其消息循环的线程(您称之为"在其上执行")是在创建窗口时定义的。您可以创建多个线程并从中启动消息循环(从而在它们上创建窗口),但这通常被认为是危险的。

必须在同一个线程中调用两个重要的调用:CreateWindowGetMessage(或它们各自的等价)。你的解决方案不会,所以它是错误的。

你可以在任何线程中调用PostMessageSendMessage有点危险,因为它在跨线程场景中阻塞,并且可能死锁。

不,这些调用没有并发性检查

最新更新