Практическая работа № 4, целая
Объявите и инициализируйте глобальные данные/переменные, которые требуют синхронизации (например «count»). Объявите и инициализируйте связанный мьютекс. Создайте потоки A и B для работы.
Поток А
- Работает до момента, когда должно произойти определенное условие (например, «счетчик» должен достичь указанного значения).
- Блокирует связанный мьютекс и проверяет значение глобальной переменной.
- Вызовает pthread_cond_wait(), чтобы выполнить блокирующее ожидание сигнала от Thread-B. Обратите внимание, что вызов pthread_cond_wait() автоматически и атомарно разблокирует связанную переменную мьютекса, чтобы она могла использоваться Thread-B.
- При получении сигнала поток А просыпается, мьютекс автоматически блокируется атомарно.
Поток B
- Меняет значение глобальной переменной, которую ожидает Thread-A.
- Проверяет значение глобальной переменной ожидания Thread-A. Если оно удовлетворяет желаемому условию, сигнализирует Thread-A.
- Разблокирует мьютекс.