2010-08-11 61 views

回答

2

是的,我認爲你可以。

由於數據包是單獨發送的,儘管它們接收的順序是非確定性的,但它已經在使用UDP。

因此,在同一套接字中的多個線程發送罰款。儘管如果你使用套接字(比如bind(),close())來做其他事情,那麼你最終會遇到競爭條件,所以你可能要小心。

1

系統調用應該是原子的,所以對於UDP來說看起來很正常。然後內核也有錯誤,你正在邀請各種令人討厭的驚喜。爲什麼你不能每個線程使用套接字?它不像TCP那樣需要連接。作爲額外的獎勵,你會爲每個描述符獲得一個單獨的發送緩衝區。

+0

我不確定原子部分。例如,在Linux上,如果啓用了搶佔,則系統調用不是原子的 – Emiliano 2011-06-23 08:55:33