Почему не возможен синхронизованный вывод двух потоков при использовании двух мутексов? Здравствуйте,
Возникла задача - синхронизовать вывод родительской и дочерней нитей ( их всего 2) : сначала родительская нить выводит первую строку, затем дочерняя, затем родительская вторую строку и т.д. Использовать можно только мутексы, остальные средства синхронизации запрещены. Сходу не могу доказать, почему это невозможно. Подскажите, пожалуйста.
Исходный текст задачи:Напишите программу, которая создает нить. Используйте атрибуты по умолчанию. Родительская и вновь созданная нити должны распечатать десять строк текста. Модифицируйте программу так, чтобы вывод родительской и дочерней нитей был синхронизован: сначала родительская нить выводила первую строку, затем дочерняя, затем родительская вторую строку и т.д. Используйте мутексы.
Явные и неявные передачи управления между нитями (sleep(3C)/usleep(3C), sched_yield(3RT)) и холостые циклы разрешается использовать только на этапе инициализации.
Докажите, что данная задача не может быть решена с использованием двух мутексов без использования других средств синхронизации.
Заранее благодарен.

21 Авг 2019 в 06:54
254 +1
1
Ответы
1

При использовании двух мутексов для синхронизации родительской и дочерней нитей вывода, существует вероятность возникновения состояния гонки (race condition), когда оба потока попытаются заблокировать оба мутекса одновременно. В этом случае может возникнуть взаимоблокировка, когда каждый поток ожидает освобождения мутекса, который заблокировал другой поток.

Таким образом, при использовании только двух мутексов для синхронизации вывода родительской и дочерней нитей, существует риск возникновения взаимоблокировки, что делает невозможным синхронизацию вывода двух потоков только с помощью мутексов.

Для решения данной задачи, возможно, понадобятся другие средства синхронизации, такие как условные переменные или семафоры, чтобы гарантировать правильный порядок вывода строк родительской и дочерней нитей.

20 Апр 2024 в 13:11
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир