В качестве примера дано приложение, эмулирующее работу банка. Клиенты периодически изменяют свой баланс методом UpdateClientBalance, в котором между считыванием общего баланса и записью обновленного значения выполняются длительные операции.
-
Сделать fork репозитория с примером.
-
Выполнить все TODO. Быстрый поиск TODO в Visual Studio: View -> Task List.
-
Реализовать проблему со слайда 14 лекции 2.
-
Исправить некорректное поведение из оригинального приложения (вывод “ERROR” в консоль) и из реализованного вами пункта 3.
Для реализации использовать различные примитивы синхронизации:
a. Критическая секция
b. Мьютекс
c. Семафор
d. Событие
Использование примитива в runtime должно определяться параметром приложения. Одно из значений ключей должно блокировать использование всех примитивов синхронизации.
-
Количество одновременно работающих экземпляров CBankClient должно определяться параметром приложения.
-
Приложение должно выдавать справку по своему использованию при запуске с ключом /? .
Каждая правка TODO и каждые следующие пункт и подпункт задания – как минимум один отдельный коммит.