创建Windows和线程 - C ++

时间:2010-11-19 21:47:10

标签: c++ windows multithreading visual-studio-2008 mfc

当使用CreateEx创建新窗口时,其代码是在其自己的线程中执行还是在其父线程(即执行其实例化代码的线程)中执行?感谢。

5 个答案:

答案 0 :(得分:7)

窗口实际上并不运行任何代码,所有代码都是从消息循环中调用的,这是您自己代码的一部分。尝试使用多个线程与Windows UI进行交互时,您可能遇到很多问题,因此您应该始终在单个线程内响应消息。

答案 1 :(得分:3)

Windows具有线程关联性 - 请参阅Raymond Chen关于此问题的article

答案 2 :(得分:2)

CreateWindowEx()不会创建新主题。如果你想要一个新线程,你必须打电话 _beginthreadex()(通常是首选)或CreateThread()

如果您想知道,_beginthreadex()CreateThread()更受欢迎,因为前者会初始化后者没有的部分CRT。

答案 3 :(得分:1)

不,创建窗口不要启动新线程

答案 4 :(得分:0)

跨线程GUI的东西通常以灾难结束。 Windows库通过抛出异常来积极地阻止它。

即使允许,CreateWindowEx默认也不能这样做,因为它会对你的代码做一些非常大的假设(锁,线程安全等);并且大多数Windows开发可能仍然基本上是单线程的。