我正在为令牌环 LAN 编写一个模拟,并尝试在我的主程序的单独线程中运行一个计时器,以检查从监视器接收“活动状态”是否超时。我在其他节点之前启动监视器程序,它们在发送和“活动状态”或开始选择新监视器之前都有相同的等待时间,但节点程序似乎在监视器之前超时。
这只是python中的并发问题还是我的代码更有可能出现问题?
这是线程运行的函数,如果您需要更多信息,请询问
def timer():
global reset
global ismonitor
global mToSend
global dataToSend
reset = time.time()
send_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while 1:
timer = time.time()
elapsed = timer - reset
if elapsed > 5:
if ismonitor:
mToSend = "110000" ## send around a token with a monitor alive flag on the broadcast channel
mToSend += maddr
dataToSend = True
reset = time.time()
else:
holdelection()
reset = time.time()