Внедрение Барьера в Python2 .7 - PullRequest
0 голосов
/ 12 июля 2020

Я использую следующий ионный барьер на 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 работает и я одновременно получил результаты печати, но после второго спящего режима он не работает.

помогите пожалуйста

...