如果线程中的条件包含全局变量,则Python只运行一个线程。有办法解决这个问题吗?

2024-09-29 23:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个线程,它们必须并行运行。但是只有第一个线程运行正常,而且由于两个线程相互依赖,所以第一个线程继续运行。你知道吗

我不能把所有的代码都粘贴在这里,但这是导致问题的部分

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

在这里,start\u index、ending\u index和ackwindow是全局变量,如果使用“global”,则只有线程startsending()可以工作。我也尝试过使用锁,但是如果使用了锁,整个while循环就必须在critical部分中。你知道吗

实际上,while循环就是线程本身。两个循环必须同时运行,代码才能工作。你知道吗

有办法解决这个问题吗?或者我必须不使用线程,按顺序进行吗?你知道吗


Tags: 代码index粘贴defendingsome线程starting

热门问题