2015-11-13 39 views
0
def run(self): 
    while True: 
     if not self.MessagesQueue.empty(): 
      self.sendMessage()       
     response=self.s.recv(1024).decode("utf-8") 
      self.processResponse(response) 
     time.sleep(1) 
def addMessageToQueue(self,message): #called from main thread 
    self.MessagesQueue.put(message) 

的數據,與該代碼的問題是,recv的塊的線程,所以我能的sendMessage()只有當我接收到1024個字節的數據,我想要在任何時候發送數據,即使是在1024字節未完全接收的迭代中。通過插座而不依賴發送此代碼是在線程上運行的接收數據

我該怎麼做? 謝謝。

+1

如果你不需要依賴關係,你爲什麼要在同一個線程中發送和接收? – Barmar

+0

在recv中被阻塞時,我可以使用套接字進行發送嗎? – Koten

+0

是的,你可以。這兩個方向是獨立的渠道。 – Barmar

回答

0

如果應用程序不要求您同步它們,請在不同的線程中發送和接收。一個線程的每個方向都是獨立的,在一個線程中發送時沒有問題,另一個線程在recv()中被阻塞。

相關問題