【问题标题】:Why use GetMessage/DispatchMessage when threads are doing all the work?为什么在线程完成所有工作时使用 GetMessage/DispatchMessage?
【发布时间】:2011-07-06 03:35:13
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: multithreading


    【解决方案1】:

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

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

    我可能有点离谱,但这个问题确实需要猜测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      相关资源
      最近更新 更多