为什么在线程执行所有工作时使用GetMessage / DispatchMessage?

时间:2011-07-06 03:35:13

标签: multithreading

我有两个版本的最小网络服务器。

两者都执行一个无限循环,接收传入请求并创建一个线程来为每个请求提供服务。

一个版本只是开始执行无限循环。

另一个版本创建一个特殊的线程来执行无限循环,然后主程序进入标准的Windows GetMessage / DispatchMessage循环。

两个版本都没有GUI或控制台窗口,它们都只是无形地运行,并且没有编码机制来使程序退出(即故意退出任何循环)。

有关为什么一个版本使用额外线程加上GetMessage / DispatchMessage的猜测?

1 个答案:

答案 0 :(得分:0)

这可能是习惯,基于各个版本的开发人员的习惯。习惯于GUI编码的人可能更有可能添加GetMessage / DispatchMessage代码。他们可能已经开始使用标准模板并进行调整以创建特定项目。

或者它可能是故意的 - 也许有人预计在主线程中添加GUI或一些内务处理任务。或者可能是一个看门狗机制,如果无限循环崩溃(例如由于未捕获的异常),主线程将自动重启循环。

我可能会离开基地,但问题确实需要猜测。