多線程讀寫同一個socket


http://book.77169.org/3933/3933045.htm

 

多個線程可否對同一個套接字進行寫操作,例如有一個SOCKET s;兩個線程同時向s中寫入內容,其中
一個寫入為"12",而另一個寫入內容為"34",在客戶端接收的數據中有沒有可能結果為"13","24"???

 

1、多個線程可以對同一socket進行收發,但是要自己進行同步

 

原則上說是有可能的
但是實際上的可能性很小
你可以試試發個長一點的,比如一個發1024字節個'a'
一個發1024字節個'b'
看看收到的a和b是不是分開的

 

不要同時讀或者同時寫

 

(1) 不會出現 13 ,24 這樣的情況的
第一個線程send,會產生一個tcpid之類的東東,即使發送到一半,控制權給了線程2,線程2send后又有自己的tcpid,據TCP/IP協議,最后IP重組后得的數據依然還是 12 ,34

 

select/ epoll  會不會保證socket讀寫的同步??


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM