Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Синхронизация потоков в среде ОС Windows


Автор: Solominka 14.11.2010, 16:39
В общем, нужна помощь, чтобы разобраться в задаче.
Тема - синхронизация потоков. В моём случае - с помощью Таймера.

Задача дана в следующем виде.

Цитата
В пансионе отдыхают и предаются размышлениям 5 философов, пронумерованные от 1 до 5. В столовой расположен круглый стол, вокруг которого расставлены 5 стульев, также пронумерованные от 1 до 5. На столе находится одна большая тарелка со спагетти, которая пополняется бесконечно, также там расставлены 5 тарелок, в которые накладывается спагетти, и 5 вилок, назначение которых очевидно.
    Для того чтобы пообедать, философ входит в столовую и садится на любой стул. При этом есть философ сможет только в том случае, если свободны две вилки – справа и слева от его тарелки. При выполнении этого условия философ поднимает одновременно обе вилки и может поглощать пищу в течение какого-то заданного времени. В противном случае, философу приходится ждать освобождения обеих вилок.
    Пообедав, философ кладет обе вилки на стол одновременно и уходит.
    Описанный процесс происходит бесконечно.
    Воспользоваться объектами синхронизации типа «ожидаемый таймер».


В общем я не могу понять как минимум, что мне под чем понимать? Что понимать под тарелкой спагетти, вилками, и т.д.? Единственное, что я поняла - 5 философов - это 5 потоков... Больше ничего...

А так же не нашла нигде примера синхронизации потоков с помощью таймера.

Объясните пожалуйста, кто-нибудь, что мне надо делать и с чего начать!  smile 

Автор: ama_kid 15.11.2010, 10:23
Цитата(Solominka @  14.11.2010,  17:39 Найти цитируемый пост)
что мне надо делать и с чего начать!
Вспомнил, что несколько лет назад я http://forum.vingrad.ru/index.php?showtopic=142096 такую же задачу в этом же разделе. Начни с изучения того кода. В качестве домашнего задания - использование семафоров заменить на использование waitable-timers.

Автор: Solominka 15.11.2010, 11:20
ama_kid, ооо, спасибо большое за примерчик!
Я уж думала, мне совсем некому помочь =__=

Цитата

использование семафоров заменить на использование waitable-timers.


Интересно, как... Примеров то нету с этим таймером, чтоб хотя бы синтаксис посмотреть...
Ладно, попробуем что-нибудь сделать...

Автор: ama_kid 15.11.2010, 11:27
Цитата(Solominka @  15.11.2010,  12:20 Найти цитируемый пост)
Интересно, как... Примеров то нету с этим таймером, чтоб хотя бы синтаксис посмотреть...
Ну зачем же так говорить?
http://www.interface.ru/home.asp?artId=4137 же ссылка по http://yandex.ru/yandsearch?text=Waitable+timers&lr=213. И вообще, не стоит игнорировать http://msdn.microsoft.com/en-us/library/ms687012%28VS.85%29.aspx

Автор: Solominka 15.11.2010, 18:10
ama_kid, ну я просто искала по-другому... "сихронизация потоков с помощью Timer" вот он мне  ине выдал ничего вразумительного =__=
Благодарю *ушла пробовать*

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)