次のようなコードがあるとします。
def func1(a,b,c):
try:
p = pycurl.Curl()
p.setopt(pycurl.PROXY, "127.0.0.1")
p.setopt(pycurl.PROXYPORT, 9050)
p.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
p.perform()
p.close()
except pycurl.error as error:
if error[0] == 28: # timeout - change proxy
print "Tor timeout, need to change"
queue.put((a,b,c))
new_tor()
return
def new_tor():
# send_signal_for_new_ident_is_here
このコードを 7 つのスレッドで開始します。
スレッドがエラー 28 を受け取ると、ID が変更されます。しかし、識別を変更するためにすべての 7 つのスレッドがシグナルを送信することが起こります。
これを行う方法:
スレッドがエラー 28 を受け取った場合、スレッドは new_tor() を呼び出し、他の 6 つのスレッドは結果を待つだけでなく、それから作業を続行します。これを同期する方法は?