小编Wat*_* v2的帖子

线程101:什么是Dispatcher?

曾几何时,我记得这些东西.随着时间的推移,我的理解已经淡化,我的意思是刷新它.

我记得,任何所谓的单线程应用程序都有两个线程:

a)具有指向main或DllMain入口点的指针的主线程; 和

b)对于具有一些UI的应用程序,运行WndProc的UI线程(也称为辅助线程),即执行WndProc的线程,该线程接收Windows发布给它的消息.简而言之,执行Windows消息循环的线程.

对于UI应用程序,主线程处于阻塞状态,等待来自Windows的消息.当它收到它们时,它会将它们排队并将它们分派到消息循环(WndProc)并启动UI线程.

根据我的理解,处于阻塞状态的主线程是这样的:

C++

while(getmessage(/* args &msg, etc. */))
{
    translatemessage(&msg, 0, 0);
    dispatchmessage(&msg, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

C#或VB.NET WinForms应用程序:

Application.Run( new System.Windows.Forms() );
Run Code Online (Sandbox Code Playgroud)

这就是他们所谓的调度员吗?

我的问题是:

a)我的上述理解是否正确?

b)调度员到底是什么名字?

c)指向一个资源,我可以从Windows/Win32的角度更好地理解线程,然后将它与C#等高级语言联系起来.佩佐尔德在他的史诗作品中不遗余力地讨论这个问题.

虽然我相信我有点对,但确认会有所缓解.

multithreading dispatcher message-loop

5
推荐指数
1
解决办法
1669
查看次数

标签 统计

dispatcher ×1

message-loop ×1

multithreading ×1