Beispiel #1
0
 def __init__(self, n):
     self.mutex = Mutex()
     self.servings = 0
     self.full_pot = Semaphore(0)
     self.empty_pot = Semaphore(0)
     self.barrier1 = SimpleBarrier(n)
     self.barrier2 = SimpleBarrier(n)
 def __init__(self, n, n_savages):
     self.servings = n
     self.mutex = Mutex()
     self.empty_pot = Semaphore(0)
     self.full_pot = Semaphore(0)
     self.barrier1 = SimpleBarrier(n_savages)
     self.barrier2 = SimpleBarrier(n_savages)
Beispiel #3
0
 def __init__(self):
     self.oxygen = 0
     self.hydrogen = 0
     self.mutex = Mutex()
     self.oxyQueue = Semaphore(0)
     self.hydroQueue = Semaphore(0)
     self.barrier = Barrier(3)
Beispiel #4
0
 def __init__(self):
     self.mutex = Mutex()
     self.dealersQ = Semaphore()
     self.officersQ = Semaphore()
     self.officerCounter = 0
     self.dealerCounter = 0
     self.barrier = SimpleBarrier(4)
Beispiel #5
0
 def __init__(self, capacity):
     self.free_space = Semaphore(capacity)
     self.items = Semaphore(0)
     self.mutex = Mutex()
     self.produced = 0
     self.consumed = 0
     self.closed = False
Beispiel #6
0
 def __init__(self):
     self.hackers = 0
     self.serfs = 0
     self.mutex = Mutex()
     self.hackers_queue = Semaphore(0)
     self.serfs_queue = Semaphore(0)
     self.barrier = SimpleBarrier(4)
Beispiel #7
0
 def __init__(self):
     self.mutex = Semaphore(1)
     self.oxygenCount = 0
     self.hydrogenCount = 0
     self.oxyQueue = Semaphore(1)
     self.hydroQueue = Semaphore(2)
     self.barrier = Barrier(3)
Beispiel #8
0
 def __init__(self):
     self.mutex = Mutex()
     self.mutex2 = Mutex()
     self.servings = 0
     self.full_pot = Semaphore(0)
     self.empty_pot = Semaphore(0)
     self.barrier1 = SimpleBarrier(number_of_savages)
     self.barrier2 = SimpleBarrier(number_of_savages)
Beispiel #9
0
 def __init__(self):
     # binarny semafor
     self.mutex = Semaphore(1)
     self.oxygenQueue = Semaphore(0)
     self.hydrogenQueue = Semaphore(0)
     self.oxygen = 0
     self.hydrogen = 0
     self.barrier = Barrier(3)
Beispiel #10
0
 def __init__(self, n):
     self.mutex = Mutex()
     self.free_chairs = n
     self.queue = []
     self.customer = Semaphore(0)
     self.barber = Semaphore(0)
     self.customerDone = Semaphore(0)
     self.barberDone = Semaphore(0)
Beispiel #11
0
 def __init__(self, N):
     self.N = N
     self.customers = 0
     self.queue = []
     self.mutex = Mutex()
     self.customer = Semaphore(0)
     self.customerDone = Semaphore(0)
     self.barberDone = Semaphore(0)
Beispiel #12
0
 def __init__(self, c, m):
     self.c = c
     self.m = m
     self.board_queue = Semaphore(0)
     self.unboard_queue = Semaphore(0)
     self.barrier = SimpleBarrier(c)
     self.changed = Semaphore(0)
     self.loading_area = [Semaphore(0) for i in range(m)]
     self.unloading_area = [Semaphore(0) for i in range(m)]
Beispiel #13
0
    def __init__(self, customer_capacity):
        self.N = customer_capacity
        self.customers = 0
        self.mutex = Mutex()

        self.barber = Semaphore(0)
        self.customer = Semaphore(0)

        self.barber_done = Semaphore(0)
        self.customer_done = Semaphore(0)
Beispiel #14
0
 def __init__(self, n, c):
     self.mutex = Mutex()
     self.chef_mutex = Mutex()
     self.servings = 0
     self.num_of_chefs = c
     self.full_pot = Semaphore(0)
     self.empty_pot = Semaphore(0)
     self.barrier1 = SimpleBarrier(n)
     self.barrier2 = SimpleBarrier(n)
     self.chef_barrier2 = SimpleBarrier(c)
     self.chef_barrier = SimpleBarrier(c + 1)
Beispiel #15
0
def init():
    accessData = Semaphore(1)
    turniket = Semaphore(1)
    ls_monitor = Lightswitch()
    ls_cidlo = Lightswitch()
    validData = Event()
 
 
    for monitor_id in range(2):
        Thread(monitor, monitor_id, turniket, validData, ls_monitor, accessData)
    for cidlo_id in range(11):
        Thread(cidlo, cidlo_id, turniket, validData, ls_cidlo, accessData)
Beispiel #16
0
 def __init__(self):
     self.mutex = Mutex()
     self.cooking = Mutex()
     self.refill = Mutex()
     self.servings = 0
     self.active_cooks = 0
     self.cooks_done = 0
     self.full_pot = Semaphore(0)
     self.empty_pot = Semaphore(0)
     self.barrier1 = SimpleBarrier(N)
     self.barrier2 = SimpleBarrier(N)
     self.pot_ready = Semaphore(0)
Beispiel #17
0
    def __init__(self, n_savages=5, n_cooks=3):
        self.servings = 0
        self.mutex = Mutex()
        self.SERVINGS_NEEDED = n_savages

        self.full_pot = Semaphore(0)
        self.empty_pot = Semaphore(0)

        self.barrier1 = SimpleBarrier(n_savages)
        self.barrier2 = SimpleBarrier(n_savages)

        self.cookLS = CookLS()
        self.cookBarrier1 = SimpleBarrier(n_cooks)
        self.cookBarrier2 = SimpleBarrier(n_cooks)
Beispiel #18
0
 def __init__(self):
     self.lightswitch_sensors = Lightswitch()
     self.lightswitch_operators = Lightswitch()
     self.written_data_by_sensors = Event()
     self.without_operators = Semaphore(1)
     self.without_sensors = Semaphore(1)
     self.simple_barrier = SimpleBarrier(3)
     self.operator = Operator(self.lightswitch_operators,
                              self.without_operators, self.without_sensors,
                              self.simple_barrier)
     self.sensor = Sensor(self.lightswitch_sensors,
                          self.written_data_by_sensors,
                          self.without_sensors, self.without_operators,
                          self.simple_barrier)
Beispiel #19
0
def customer(shared, cid):
    barber = Semaphore(0)

    while True:
        sleep(randint(9, 10) / 100)

        shared.mutex.lock()
        if shared.customers == shared.N:
            balk(cid)
            shared.mutex.unlock()
            continue
        print(f"customer {cid} wait for...")
        shared.queue.append(barber)
        shared.customers += 1
        shared.mutex.unlock()

        shared.customer.signal()
        barber.wait()
        getHairCut(cid)
        shared.customerDone.signal()
        shared.barberDone.wait()

        shared.mutex.lock()
        shared.customers -= 1
        shared.mutex.unlock()
Beispiel #20
0
    def __init__(self, numberOfThreads):
        self.numberOfThreads = numberOfThreads
        self.actualPosition = 1
        self.fibannociList = [0, 1]
        self.semaphoreList = []

        for _ in range(numberOfThreads):
            self.semaphoreList.append(Semaphore(0))
        self.semaphoreList[0].signal()
Beispiel #21
0
    def __init__(self, resources, smokers):
        self.agentSem = Semaphore(1)

        self.res = {
            resources[i]: {
                'sem': Semaphore(0),
                'val': 0,
            }
            for i in range(len(resources))
        }
        self.res['mutex'] = Mutex()

        self.smo = {
            k: {
                'sem': Semaphore(0),
                'need': v,
            }
            for k, v in smokers.items()
        }
Beispiel #22
0
 def __init__(self, n):
     self.N = n
     self.counter = 0
     self.fibonacci = [0, 1] + [0] * n
     self.threads = [0] * (n + 1)
     self.mutex = Mutex()
     self.event = Event()
     self.event.signal()
     for j in range(n + 1):
         self.threads[j] = Semaphore(0)
     self.threads[0].signal(1)
Beispiel #23
0
def init(x):
    accessData = Semaphore(1)
    turniket = Semaphore(1)
    ls_monitor = Lightswitch()
    ls_cidlo = Lightswitch()
    validData = Event()
    barrier_1 = Barrier(x)
    barrier_2 = Barrier(x)

    for monitor_id in range(x):
        Thread(monitor, monitor_id, turniket, validData,
               ls_monitor, accessData, barrier_1, barrier_2)

    for cidlo_id in range(2):
        # Cidla P a T
        Thread(cidlo, cidlo_id, turniket, validData,
               ls_cidlo, accessData, [10, 20])

    # Cidlo H
    Thread(cidlo, 2, turniket, validData, ls_cidlo, accessData, [20, 25])
 def __init__(self, size, adt):
     self.adt = adt
     self.size = size
     self.counter = 0
     self.fibonacci = list()
     self.fibonacci.append(0)
     self.fibonacci.append(1)
     if adt == "semaphore":
         self.semaphore = Semaphore(1)
     elif adt == "event":
         self.event = Event()
Beispiel #25
0
 def __init__(self, count):
     self.n = count
     self.mutex = Mutex()
     self.events = [0] * count
     for j in range(count):
         self.events[j] = Event()
     self.events[0].signal()
     self.array = [0, 1] + [0] * count
     self.sem = [0] * count
     for j in range(count):
         self.sem[j] = Semaphore(0)
     self.sem[0].signal()
Beispiel #26
0
def main():
    forks = [Semaphore(1) for _ in range(PHIL_NUM)]
    footman = Semaphore(PHIL_NUM - 1)

    # phils = [Thread(phil, forks, footman, id) for id in range(PHIL_NUM)]

    lefties = randint(1, PHIL_NUM - 1)
    phil_type = [0] * lefties + [1] * (PHIL_NUM - lefties)
    phils = list()
    for phil_id in range(PHIL_NUM):
        if phil_type[phil_id]:
            phils.append(
                Thread(phil, forks, phil_id, phil_id,
                       ((phil_id + 1) % PHIL_NUM)))
        else:
            phils.append(
                Thread(phil, forks, phil_id, ((phil_id + 1) % PHIL_NUM),
                       phil_id))

    for p in phils:
        p.join()
Beispiel #27
0
 def __init__(self, n):
     self.N = n
     self.counter = 0
     self.mutex = Mutex()
     self.turnstile = Semaphore(0)
Beispiel #28
0
 def __init__(self, N):
     self.N = N
     self.C = 0
     self.M = Mutex()
     self.T = Semaphore(0)
Beispiel #29
0
 def __init__(self, N):
     self.mutex = Mutex()
     self.capacity = N
     self.counter = 0
     self.sem = Semaphore()
Beispiel #30
0
    def __init__(self):
        self.tobacco = Semaphore(0)
        self.paper = Semaphore(0)
        self.match = Semaphore(0)

        self.agentSem = Semaphore(1)