Добавил:
Vanomaj
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab_3 / mutex_labos
.py#!/usr/bin/env python3
import threading
import time
lock = threading.Lock() # Создаем объект мьютекса
account_balance = [1000] # Используем список для хранения баланса
print(f"Начальный баланс: {account_balance[0]} единиц")
time.sleep(2)
# пополнение баланса
def businessman1_deposit_money(account_balance, amount):
lock.acquire() # Захватываем мьютекс перед обращением к общему ресурсу
account_balance[0] += amount
print(f"Бизнесмен 1 решает пополнить баланс на {amount} единиц.")
print(f"Бизнесмен 1 решает завершить работу с банковским счетом")
lock.release() # Освобождаем мьютекс после завершения работы
# проверка баланса
def businessman2_check_balance(account_balance):
lock.acquire() # Захватываем мьютекс перед обращением к общему ресурсу
time.sleep(2)
print("Бизнесмен 2 решает проверить баланс")
time.sleep(2)
print(f"Текущий баланс: {account_balance[0]} единиц")
print(f"Бизнесмен 2 решает завершить работу с банковским счетом")
lock.release() # Освобождаем мьютекс после завершения работы
# Создаем потоки
businessman1_thread = threading.Thread(target=businessman1_deposit_money, args=(account_balance, 2000))
businessman2_thread = threading.Thread(target=businessman2_check_balance, args=(account_balance,))
# Запускаем потоки
businessman1_thread.start()
businessman2_thread.start()
print("Сеанс работы с банковским счётом завершен")
Соседние файлы в папке lab_3