我有两个版本的最小网络服务器。
两者都执行一个无限循环,接收传入请求并创建一个线程来为每个请求提供服务。
一个版本只是开始执行无限循环。
另一个版本创建一个特殊的线程来执行无限循环,然后主程序进入标准的Windows GetMessage / DispatchMessage循环。
两个版本都没有GUI或控制台窗口,它们都只是无形地运行,并且没有编码机制来使程序退出(即故意退出任何循环)。
有关为什么一个版本使用额外线程加上GetMessage / DispatchMessage的猜测?
答案 0 :(得分:0)
这可能是习惯,基于各个版本的开发人员的习惯。习惯于GUI编码的人可能更有可能添加GetMessage / DispatchMessage代码。他们可能已经开始使用标准模板并进行调整以创建特定项目。
或者它可能是故意的 - 也许有人预计在主线程中添加GUI或一些内务处理任务。或者可能是一个看门狗机制,如果无限循环崩溃(例如由于未捕获的异常),主线程将自动重启循环。
我可能会离开基地,但问题确实需要猜测。