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

时间:2013-12-06 03:51:33

标签: python multithreading critical-section locks

我有两个线程,两个线程必须并行运行。但只有第一个正常运行,并且因为两个线程彼此依赖,所以第一个线程继续运行。

我不能在这里粘贴整个代码,但这是引起问题的部分,

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循环是这里的线程。两个循环必须同时运行才能使代码生效。

有没有办法解决这个问题?或者我是否必须在没有线程的情况下以顺序方式执行此操作?

0 个答案:

没有答案