我正在编程一个http服务器。主守护进程产生一堆监听器,这些监听器是线程或进程,具体取决于用户设置。在创建侦听器时,套接字描述符被传递给它,它的工作就是侦听连接(duh)。一个信号量正在呼叫listen
,以避免雷鸣般的牛群效应。退出多线程/多进程的Web服务器
我的问题是如何退出服务器。在这种情况下,监听者被阻塞在信号量上,守护进程将如何告诉他们关闭?该守护进程不能只是杀死他们,也许有人正在回应请求...
我想保持设计尽可能简单,但我找不到解决这个问题。
这里有一些丑陋的解决方法:
- 设置信号灯超时。醒来。我应该关闭吗?没有?好吧,回到睡觉;
- 只要杀了他们;
- 共享内存中的布尔值数组,意味着响应/阻塞,守护进程会相应地终止。迄今为止最好的,但并不那么简单。
你说什么? 谢谢。
哇。我喜欢这个。选择对于这种情况来说是完美的。 – Metz 2012-03-24 20:36:15