1
爲了在python中實現一個簡單的協議,我使用了一個線程來監視接收器發送的確認。要做到這一點,我使用一個線程函數在Python中的線程中終止sockert.recv
def ackListener(self):
while self.waitingforack:
ack = self.socket_agent.recv(4)
...
exit()
其中self.waitingforack
是布爾我設置爲False
,當我收到的確認,我發送的每個消息。
的問題是,我的代碼是阻止在self.socket_agent.recv(4)
運行,waitingforack
值的修改完成太晚
有沒有辦法迫使線程時,我沒有在等待ACK終止了嗎?
謝謝
謝謝你似乎setblocking和setTimeout的可以幫助我。問題是,我只想在我發送每條消息的時候修改阻塞或超時值(這是我在recv操作中已經被阻塞的時候)... – 2010-10-21 23:42:58
@Martin Trigaux:如上所述,如果你已經叫recv,你會被阻止。您應該設置爲非阻塞或減少鎖定超時並圍繞它設計解決方案。 – pyfunc 2010-10-22 00:02:40