トークンリング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()