[英]Interrupting accept()
是否有OS便攜式方法來中斷阻止accept
? 我有一個多線程守護進程/服務,當守護進程/服務收到關閉信號時,它需要正常關閉所有偵聽網絡主機。 我看到有人說您應該使用非阻塞套接字或使用超時進行選擇-但是這些不會降低性能,因為我的應用程序應該盡可能快嗎? 守護進程在主線程中運行,而每個偵聽網絡主機在其自己的線程中運行。 現在的問題是,如果偵聽網絡主機的套接字上沒有網絡流量,則accept
無限期等待。 如果我應該使用信號,那么是否有使用信號中斷accept
的示例?
解決方案是在無事可做時不調用accept
。 只需使用非阻塞select
或poll
來等待,直到有要接受的東西,然后再accept
。 除非您創建一個非常小的超時,否則從非阻塞調用中喚醒並再次等待該套接字不會有任何性能影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.