CWnd::Create 会产生一个新线程吗?

Posted

技术标签:

【中文标题】CWnd::Create 会产生一个新线程吗?【英文标题】:Does CWnd::Create spawn a new thread? 【发布时间】:2014-12-07 21:32:17 【问题描述】:

H,

我有一个旧的 MFC 应用程序,它有一个继承自 CWnd 的类。我正在与原作者交谈,他说 Cwnd::Create() 会创建一个新线程。但是,我在 MSDN 文档 http://msdn.microsoft.com/en-us/library/0yhc9kx4.aspx

中找不到对此的任何引用

任何人都可以确认当调用 Cwnd 时 Create() 有一个新线程启动。一个指向一些解释它的文档的链接将是完美的。

谢谢

【问题讨论】:

我认为他对 CWinThread 感到困惑。 也许吧。这是他 8 多年前写的东西,我也一直在添加功能。考虑到我很难记住我上个月所做的事情,我对他记得的事情感到惊讶! 【参考方案1】:

Microsoft 提供了 MFC 的源代码as described here,因此您可以自己检查 MFC 源代码并确切了解它的作用。 CWnd::Create的实现见C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc\wincore.cpp,很明显没有创建新线程。

【讨论】:

谢谢 我不知道 Icode 抓取代码。感谢您证实我的怀疑。

以上是关于CWnd::Create 会产生一个新线程吗?的主要内容,如果未能解决你的问题,请参考以下文章

如果任务产生不同的线程,Serial DispatchQueue 会等待吗

oracle更新一行数据,另一个会话读取是为啥会产生2个CR块?

synchronized同步方法

面试官:ThreadLocal 为什么会内存泄漏吗?是怎么产生的?面试必问!

如果我在进程中执行 sched_setaffinity,它产生的线程会受到影响吗

一个尚未启动的新线程对象会被垃圾回收吗?