2012-03-18 38 views
1

我從主進程中的accept函數中獲取一個套接字,並且兩個或多個線程可以從它發送數據。然後,當兩個或多個線程想要並行發送數據時,套接字的訪問必須是相互排斥的。我的問題是如果操作系統將鎖定添加到系統底部的連接套接字。當兩個或更多線程想要訪問它時,我是否必須將鎖添加到套接字?

+0

我不會知道答案,但您應該添加您感興趣的操作系統以及您使用的庫(可能甚至是什麼語言) – abesto 2012-03-18 11:06:02

+0

對不起。操作系統是FreeBSD,庫是POSIX套接字庫(C語言)。謝謝。 – 2012-03-19 18:24:34

回答

0

既然你提到了accept(),我認爲我們正在談論流套接字。

您可以從同一個套接字上的多個線程或進程同時發送,但不能保證來自多個發件人的數據不會交錯在一起。所以你可能不想這樣做。

如果您一次發送少量數據,但不會導致套接字阻塞,您可能預期提交給每個同時調用的數據塊會在另一端連續到達。大概。你不能指望它。

相關問題