Uploaded by Xzz Xu

lab2

advertisement
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Уфимский университет науки и технологий»
по дисциплине «Операционные системы»
Лабораторная работа № 2
ПОТОКИ
Выполнил:
Алимов Н.М.
ПИ-231б
Проверил:
Веденяпин. И. Э.
Уфа – 2023
Практическая часть
Задание
Написать программу, запускающую три дочерних потока. Каждый поток увеличивает
(начиная с 0) значение счетчика с разной скоростью (использовать функцию sleep). При
нажатии на клавишу ‘q’ закрыть все потоки и завершить выполнение программы.
Вариант №1
Вывести на экран номер потока, значение счетчика которого первым
достигнет значения 50.
Программа:
import threading
import time
import sys
stop_event = threading.Event()
def increment_counter(thread_num, increment):
counter = 0
while not stop_event.is_set():
counter += increment
print("Поток", thread_num, "счетчик =", counter)
if counter >= 50:
print("Поток", thread_num, "достиг значения 50")
stop_event.set()
sys.exit()
time.sleep(1 / increment)
print("Поток", thread_num, "завершен - ", counter)
if __name__ == "__main__":
threads = []
for i in range(1, 4):
increment = i
thread = threading.Thread(target=increment_counter,
args=(i, increment))
thread.start()
threads.append(thread)
while True:
if 'q' in input():
for thread in threads:
stop_event.set()
thread.join()
sys.exit()
Download