我有三臺機器A,B和C,它們都彼此連接。如果A和B嘗試同時向C發送數據,Can C可以使用兩個不同的線程接收相應的數據而不使用任何鎖定?這裏C通過不同的插座連接到A和B.提前致謝。當主機試圖從不同的套接字接收數據時,是否需要鎖定
0
A
回答
1
嗯,是的 - 無論如何都沒有明確的鎖定。 IP堆棧將擁有自己的內部鎖,但我不認爲這就是你要求的。
您已經意識到多個進程可以與不同的服務器同時進行通信,並且多個進程意味着不同的線程。 IP堆棧因此是線程安全的。
鑑於通常對一個多線程進程內的任何共享數據的一般關心(如rockstar評論所述),這些線程與不同對等端/主機上的IP端點進行通信時沒有問題。這很常見,並且工作正常。
C上的兩個線程可以安全地用A和B
獨立溝通來吧 - 試試吧!
0
[張貼作爲回答我的意見,因爲它不是錯誤的,是有道理的:P。甚至引用]
我要說的是,你可以有2個線程。一個線程偵聽來自套接字1的數據,另一個線程偵聽來自套接字2的數據。
但是,如果你需要一個鎖或不應該取決於你對數據做什麼。你把它寫入緩衝區?由於線程共享Data
,Code
& Heap
分段,因此在寫入此收到的數據時必須小心,在這種情況下需要鎖定。
這是我的基本理解。我會在這裏等待更多有見識的答案。
相關問題
- 1. 不能從套接字接收數據
- 2. 我是否需要睡眠接收來自套接字Python的數據
- 3. 是否可以通過不同的套接字發送和接收數據包?
- 4. 通過套接字接口接收不同的數據類型
- 5. Boost從TCP套接字接收數據
- 6. 從套接字nonblockin winsock2接收數據?
- 7. 如何創建總是接收數據的主機套接字。 python
- 8. 當我從套接字接收數據時,Matplotlib逐行填充空白圖像
- 9. 套接字 - 不發送/接收數據
- 10. Java套接字不接收數據
- 11. Python3:套接字接收的同時
- 12. 本地主機套接字是否有必要的keepalive?
- 13. 跨主題鎖定的套接字
- 14. 本地主機上的套接字是否可以接收來自先前連接的數據包?
- 15. 當在不同主機上建立套接字連接時出現'ECONNREFUSED'錯誤
- 16. 僅當發送python套接字時才接收數據
- 17. C++套接字不斷接收相同的數據
- 18. 套接字同步接收
- 19. 套接字同時發送/接收
- 20. Erlang:不需要從套接字中消耗數據的協議
- 21. 廣播接收機需要喚醒鎖定ACTION_SCREEN_OFF
- 22. 是否總是需要綁定一個套接字?
- 23. Qt:同步UDP套接字中是否需要waitForReadyRead/waitForBytesWritten?
- 24. 我是否需要同步套接字ArrayList?
- 25. Linux:從套接字接收超時?
- 26. 進行套接字編程時,是否需要使用鎖定函數作爲accept函數?
- 27. 測試套接字是否連接
- 28. 當數據長度未知時,從Perl中的套接字接收數據的最佳方式是什麼?
- 29. Python套接字接收 - 傳入數據包總是有不同的大小
- 30. EventMachine的不超過數據報套接字接收數據
我會說你可以有2個線程。一個線程偵聽來自套接字1的數據,另一個線程偵聽來自套接字2的數據。但是,如果您需要鎖定,則應取決於您對數據所做的操作。你把它寫入緩衝區?由於線程共享數據,代碼和堆段,因此在寫入此收到的數據時必須小心,在這種情況下需要鎖定。這是我的基本理解。我會在這裏等待更多有見識的答案。 – rockstar