Я использую следующий ионный барьер на Python 2.7 (я взял из ([{ ссылка }])
class barrier:
def __init__(self, n):
self.n = n
self.count = 0
self.mutex = Semaphore(1)
self.barrier = Semaphore(0)
def wait(self):
self.mutex.acquire()
self.count = self.count + 1
self.mutex.release()
if self.count == self.n:
self.barrier.release()
self.barrier.acquire()
self.barrier.release()
b = barrier(2)
def func1(param1, param2, param3, x):
num = [param1, param2, param3]
print(num[0], current_thread(), time.time())
time.sleep(x)
b.wait()
print(num[1], current_thread(), time.time())
time.sleep(x)
b.wait()
print(num[2], current_thread(), time.time())
t1 = Thread(target=func1, args=[1, 2, 3, 0])
t2 = Thread(target=func1, args=[6, 7, 8, 5])
t1.start()
t2.start()
t1.join()
t2.join()
после первого сна b.wait t работает и я одновременно получил результаты печати, но после второго спящего режима он не работает.
помогите пожалуйста