2010-01-25 51 views
1

我正在使用我在線發現的C套接字庫來實現一個tcp套接字數據傳輸程序。使用單個TCP套接字讀寫線程

是否有可能使2個線程共享相同的套接字連接(1個讀取和1個寫入),並讓讀取線程在寫入線程不斷寫入數據的同時執行阻塞讀取和接收數據?

我見過的所有示例套接字程序都只能進行單向通信,或者僅在收到後才發送數據。

謝謝。

回答

2

我不知道你爲什麼不能這麼做的任何技術原因。另一個問題是你的情況是否可行。 :)

您希望避免此多線程類型的方法的主要情況是讀取和寫入在應用程序級別相互依賴。我不知道你在處理數據方面做了什麼,但讀者/寫者的方法可能很難放鬆。

+0

好的謝謝,只是想確保它是可能的,因爲我從來沒有見過它的任何例子 – user258691 2010-01-25 19:25:39

+0

其實我的擔心是:如果你在讀取線程中讀取套接字時調用一個互斥鎖,那麼寫入線程將如何訪問插座。 – user258691 2010-01-25 19:37:43

+0

那麼,如果您使用互斥體來一次只允許一個線程訪問套接字,那麼您的2線程模型將無法工作。實質上,你必須讓兩個線程訪問套接字的文件描述符。 – Seth 2010-01-25 19:55:14