我正在編程一個http服務器。主守護進程產生一堆監聽器,這些監聽器是線程或進程,具體取決於用戶設置。在創建偵聽器時,套接字描述符被傳遞給它,它的工作就是偵聽連接(duh)。一個信號量正在呼叫listen
,以避免雷鳴般的牛羣效應。退出多線程/多進程的Web服務器
我的問題是如何退出服務器。在這種情況下,監聽者被阻塞在信號量上,守護進程將如何告訴他們關閉?該守護進程不能只是殺死他們,也許有人正在迴應請求...
我想保持設計儘可能簡單,但我找不到解決這個問題。
這裏有一些醜陋的解決方法:
- 設置信號燈超時。醒來。我應該關閉嗎?沒有?好吧,回到睡覺;
- 只要殺了他們;
- 共享內存中的布爾值數組,意味着響應/阻塞,守護進程會相應地終止。迄今爲止最好的,但並不那麼簡單。
你說什麼? 謝謝。
哇。我喜歡這個。選擇對於這種情況來說是完美的。 – Metz 2012-03-24 20:36:15