【发布时间】:2012-03-24 19:56:25
【问题描述】:
我正在编写一个 http 服务器。有一个主守护进程产生一堆侦听器,这些侦听器是线程或进程,具体取决于用户设置。在创建监听器时,套接字描述符被传递给它,它的工作只是监听连接(duh)。一个信号量正在包装对listen 的调用,以避免雷鸣般的羊群效应。
我的问题是如何退出服务器。在这种情况下,侦听器在信号量上被阻塞,守护进程将如何告诉他们关闭?守护进程不能只是杀死他们,也许有人正在响应请求......
我想让设计尽可能简单,但我找不到解决这个问题的方法。
这里有一些丑陋的解决方法:
- 为信号量设置超时。醒来。我应该关闭吗?不?好的,回去睡觉;
- 杀了他们;
- 共享内存中的布尔数组,表示响应/阻塞,守护进程相应地终止。迄今为止最好的,但不是那么简单。
你说什么? 谢谢。
【问题讨论】:
标签: c multithreading multiprocessing