import threading, time # Vytvoříme semafor, určíme max počet přístupů. sem = threading.Semaphore(3) # Vlákno pro práci se zdrojem, zkontrolujeme semafor. # Pokud může, přistoupí ke zdroji. # Pokud ne, čeká. def resource(thread_id): print("Vlákno {} čeká na přístup ke zdroji.".format(thread_id)) with sem: print("Vlákno {} přístoupilo ke zdroji.".format(thread_id)) time.sleep(2); print("Vlákno {} dokončilo práci se zdrojem.".format(thread_id)) def thread_run(): threads = [] for i in range(5): thread = threading.Thread(target=resource, args=(i,)) threads.append(thread) thread.start() for thread in threads: thread.join() print("Všechna vlákna dokončila práci.") thread_run()```