thread1 と thread2 の 2 つのスレッドを交互に使用するプログラムを作成しようとしています。トリッキーな部分は、最初に実行を開始するスレッドがスレッド 1 でなければならないことです。これは私がこれまでに持っているコードです:
Class Client:
#member variables
def sendFile(self,cv1,lock1):
sent=0;
while (i<self.size):
message = self.data[i:1024+i]
cv1.acquire()
BadNet.transmit(self.clientSocket,message,self.serverIP,self.serverPort)
cv1.notify()
cv1.release()
i = i+1024
sent+=1
lock1.wait()
print "File sent successfully !"
self.clientSocket.close()
def receiveAck(self,cv1,lock2):
i=0
while (1):
lock1.clear()
cv1.acquire()
cv1.wait()
print "\nentered ack !\n"
self.ack, serverAddress = self.clientSocket.recvfrom(self.buf)
cv1.release()
lock1.set()
if __name__ == "__main__":
lock1 = Event()
cv1 = Condition()
cv2= Condition()
client = Client();
client.readFile();
thread1 = Thread(target = client.sendFile, args=[cv1,lock1])
thread2 = Thread(target = client.receiveAck, args=[cv1,lock1])
thread1.start()
thread2.start()
thread1.join()
thread2.join()
私が現在直面している問題は、最初にプログラムが 2 つのスレッド間で交互に実行されることです (コンソールの出力で確認されます。ただし、任意の回数 (通常は 20 から 80 の間) の反復の後、プログラムはハングアップし、それ以上の反復は実行されません。