Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab_3 / mutex_labos

.py
Скачиваний:
0
Добавлен:
12.02.2024
Размер:
1.94 Кб
Скачать
#!/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