我有两个线程,两个线程必须并行运行。但只有第一个正常运行,并且因为两个线程彼此依赖,所以第一个线程继续运行。
我不能在这里粘贴整个代码,但这是引起问题的部分,
def startsending():
while(starting_index<=ending_index):
#some statements
clientsocket.sendto(data[index],(serverIP,serverPort))
#some statements
def startreceiving():
while(starting_index<=ending_index):
ack,servAddr = clientSocket.recvfrom(1050)
ackwindow[ack-starting_index] = 1
starting_index+=1
#some statements
这里,starting_index,ending_index和ackwindow是全局变量,如果使用“global”,则只有线程startsending()才有效。我也尝试过使用锁,但是如果使用了锁,那么整个while循环必须在临界区内。
实际上,while循环是这里的线程。两个循环必须同时运行才能使代码生效。
有没有办法解决这个问题?或者我是否必须在没有线程的情况下以顺序方式执行此操作?