我需要通過tcpip套接字高效地將相同的消息發送/扇出到主機列表。邏輯需要循環遍歷每個套接字來寫出消息。如果此邏輯運行在Linux用戶模式下,則底層操作系統將調用系統調用的次數與主機數量相同。這是昂貴的,因爲每個系統調用都需要用戶模式到內核模式的上下文切換。發送相同的tcp消息到單個上下文中的多個目標/主機切換
如果可以在採用主機列表(文件描述符)的系統調用中移動循環,效率會更高。這種系統調用是否存在於linux中?
如果這樣的系統調用存在,我們有一個在Java中的等效API(類似於Java中的transferTo()對應於linux中的sendfile())?
你能告訴我們更多關於你的用例嗎?多少臺主機?信息有多大?信息有多頻繁? –
任何使用情況都可以使用2到100的主機數量。大小消息相對較小,小於1KB。 – Thang
重複的問題,看看http://stackoverflow.com/questions/32176028/single-buffer-multiple-sockets-single-syscall-under-linux/32199626#32199626 –