私は、同期ポイントに達するまで、x
スレッドが待機する必要がある問題があります。私の解決策は同期する必要があるときに各スレッド関数によって呼び出される以下のsynchronise
メソッドを使用します。Pythonで複数のスレッドを同期する
これを行うより良い方法はありますか?
thread_count = 0
semaphore = threading.Semaphore()
event = threading.Event()
def synchronise(count):
""" All calls to this method will block until the last (count) call is made """
with semaphore:
thread_count += 1
if thread_count == count:
event.set()
event.wait()
def threaded_function():
# Do something
# Block until 4 threads have reached this point
synchronise(4)
# Continue doing something else
をその努力を2つのタスクに分割します。この制約がなければ、あなたのソリューションは理想的です。 –
スレッドはすべて同じメモリを共有しているので、スレッドを2つのステップに分解できない理由は明確ではありません。同期化前に作成された情報は、新しいスレッドが同期後に使用するために完全に利用可能でなければなりません。 –