Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Общая постановка задачи. Требуется разработать программу в виде Linux-приложения, для различных

частей которой создаются и запускается потоки выполнения, а для

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

объекты ОС. Результат выполнения выводится на терминал/консоль.

Программа должна быть устойчивой к некорректному пользовательскому

вводу. Функционирование программы, если это не оговаривается особо, может

быть завершено только путем принудительного снятия процесса с выполнения.

В большинстве вариантов заданий решаются классические задачи

синхронизации. Приостановка выполнения потока на заданный промежуток

времени может выполняться вызовом функции nanosleep().

«Обедающие философы 11 ». В пансионе отдыхают и предаются

размышлениям 5 философов (потоки), пронумерованные от 1 до 5. В столовой

расположен круглый стол, вокруг которого расставлены 5 стульев, также

пронумерованные от 1 до 5. На столе находится одна большая тарелка со

спагетти, которая пополняется бесконечно. Также там расставлены 5 тарелок,

куда накладываются спагетти, и 5 вилок (разделяемые ресурсы), назначение

которых очевидно.

Для того чтобы пообедать, философ входит в столовую и садится на

стул со своим номером. При этом есть философ сможет только в том случае,

если свободны две вилки – справа и слева от его тарелки. При выполнении

этого условия философ поднимает одновременно обе вилки и может поглощать

пищу в течение какого-то заданного времени. В противном случае философу

приходится ждать освобождения обеих вилок.

Пообедав, философ кладет обе вилки на стол одновременно и уходит.

Величина временного промежутка для поглощения пищи устанавливается

пользователем при старте приложения, а появление философа в столовой

является случайной величиной с равномерным законом распределения.

год назад
guest_16746639411773
год в сервисе
Был
год назад