偶数と奇数の機能を持つ2つのスレッドを同期する方法はPythonで偶数と奇数の機能を持つ2つのスレッドを同期する方法
それは以下のように値を返すために持っている:
fun1 odd = 1
fun2 even =2
fun1 odd = 3
fun2 even =4
fun1 odd = 5
fun2 even =6
してください任意のこれについて助けてください。
偶数と奇数の機能を持つ2つのスレッドを同期する方法はPythonで偶数と奇数の機能を持つ2つのスレッドを同期する方法
それは以下のように値を返すために持っている:
fun1 odd = 1
fun2 even =2
fun1 odd = 3
fun2 even =4
fun1 odd = 5
fun2 even =6
してください任意のこれについて助けてください。
あなたはこの例のように、この目的のために、「Event」を使用することができます。
import threading
class PrintNumbers(threading.Thread):
def __init__(self, start_number, end_number, step, set_event, clear_event):
threading.Thread.__init__(self)
self.start_number = start_number
self.end_number = end_number
self.step = step
self.set_event = set_event
self.clear_event = clear_event
def run(self):
for i in range(self.start_number, self.end_number, self.step):
print(i)
self.set_event.set()
self.clear_event.clear()
self.clear_event.wait()
self.set_event.set()
threading_event1 = threading.Event()
threading_event2 = threading.Event()
t1 = PrintNumbers(0, 10, 2, threading_event1, threading_event2)
t2 = PrintNumbers(1, 10, 2, threading_event2, threading_event1)
t1.start()
t2.start()
t1.join()
t2.join()
このコードは、同じスレッドにクリアするためのスレッドと別のそれを設定するための2つのイベント、一つのイベントを作成します。各スレッドは別のイベントを設定し、それをクリアした後イベントを待機します。
ありがとうAmin ..本当にうまくいっています。ニースの説明 –
同期のスレッド化ですか?私には同期について教えてください –
このコードを次のように拡張することができます(ループのようなスレッドを仮定し、次のイベントをsetイベントとして使用します)。 'threading_event1 = threading.Event ) '' threading_event2 = threading.Event() '' threading_event3 = threading.Event() ' ' T1 = PrintNumbers(0、10、3、threading_event1、threading_event2) '' T2 = PrintNumbers(1、10、 23 threading_event2、threading_event3) ' ' t3 = PrintNumbers(2、10、3、threading_event3、threading_event1) ' ' –
これ以上の背景は歓迎されます - これらのスレッドは作業者ですか?彼らはタスクを順番に実行するか、結果を順番に報告しなければなりませんか?すべてのタスクは事前に利用可能ですか?または、ラウンドロビンスケジューラである場合は、これらのスレッドが両方ともクリティカルセクションに到達した場合にのみスケジューリングするか、各スレッドが別のスレッドを待つ必要がありますか? –
あなたは、おそらく、 "トークンパッシング"または "バトンを渡す"と呼ばれているのは、異なるドメインにあります。 –