Networking
哪個執行緒接收 SIGURG?
我最近寫了一篇關於 Unix 的“學習筆記”,我對多執行緒程序提出了以下命題:
當收到帶有“緊急”位的 TCP 數據包時,核心幾乎不可能辨識應該接收 SIGURG 的執行緒
在第1.1 節的第 3 段中,我想對此進行事實檢查。
該標準對此沒有任何規定,並保留了整個 TCP
URG
標誌、MSG_OOB
、 以及特定於SIGURG
實現和協議的內容。但是現有的做法呢?作業系統核心會發送到在接收 TCP標誌的套接字呼叫中
SIGURG
阻塞的執行緒嗎?是否有能夠將執行緒指定為套接字所有者的實現?會不會有其他行為?recv(2)``URG
在我調查的 3 個實現中,Darwin、FreeBSD 和 Linux,主執行緒接收信號。如果主執行緒用遮罩阻塞它,則沒有執行緒接收到信號。