Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
#1

Обедающие философы - C++

20.04.2014, 15:10. Просмотров 2161. Ответов 22
Метки нет (Все метки)

Добрый вечер! Возник такой вот вопрос:
Есть стандартная задача с обедающими философами, описанная в книге Таненбаума.
Но преподователь спрашивает, почему нельзя сделать всё циклом, он сказал что может сделать обыкновенным циклом и тоже все философы поедят.
Что именно решает эта задача? И почему подход с циклом не верен?
Заранее спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 15:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обедающие философы (C++):

Обедающие философы - C++
Здравствуйте участники форума я на форуме нашел программу про обедающих философов вот её исходники using System; using...

Процессы, Обедающие философы - C++
Здравствуйте! Нужна помощь с задачей о обедающих философах сделанная не на потоках как здесь...

Обедающие философы - C#
Всем привет. Нужна помощь в решении задач об обедающих философах с помощью семафоров, мониторов и блокировки. Также нужно добавить главный...

Обедающие философы, перевод с Delphi - C#
«Проблема обедающих философов» Программная реализация задачи на языке Delphi, нужно перевести в с# windows forms main.pas unit...

.NET 4.x Обедающие философы. Решение методом монитора - C#
Здравствуйте. Ищу решения проблемы обедающих философов методом монитора( он же официант, арбитр и т.д.) Есть у кого готовый код?

Обедающие философы, уменьшить возможность возникновения deadlock-а - Java SE
Есть программа, которая решает задачу обедающих философов.public class Phil { int pos; Fork left; Fork right; int...

Обедающие философы - C++
Здравствуйте участники форума я на форуме нашел программу про обедающих философов вот её исходники using System; using...

Процессы, Обедающие философы - C++
Здравствуйте! Нужна помощь с задачей о обедающих философах сделанная не на потоках как здесь...

Обедающие философы - C#
Всем привет. Нужна помощь в решении задач об обедающих философах с помощью семафоров, мониторов и блокировки. Также нужно добавить главный...

Обедающие философы, перевод с Delphi - C#
«Проблема обедающих философов» Программная реализация задачи на языке Delphi, нужно перевести в с# windows forms main.pas unit...

.NET 4.x Обедающие философы. Решение методом монитора - C#
Здравствуйте. Ищу решения проблемы обедающих философов методом монитора( он же официант, арбитр и т.д.) Есть у кого готовый код?

Обедающие философы, уменьшить возможность возникновения deadlock-а - Java SE
Есть программа, которая решает задачу обедающих философов.public class Phil { int pos; Fork left; Fork right; int...

Обедающие философы - C++
Здравствуйте участники форума я на форуме нашел программу про обедающих философов вот её исходники using System; using...

Процессы, Обедающие философы - C++
Здравствуйте! Нужна помощь с задачей о обедающих философах сделанная не на потоках как здесь...

Обедающие философы - C#
Всем привет. Нужна помощь в решении задач об обедающих философах с помощью семафоров, мониторов и блокировки. Также нужно добавить главный...

Обедающие философы, перевод с Delphi - C#
«Проблема обедающих философов» Программная реализация задачи на языке Delphi, нужно перевести в с# windows forms main.pas unit...

.NET 4.x Обедающие философы. Решение методом монитора - C#
Здравствуйте. Ищу решения проблемы обедающих философов методом

Обедающие философы - C++
Здравствуйте участники форума я на форуме нашел программу про обедающих философов вот её исходники using System; using...

Процессы, Обедающие философы - C++
Здравствуйте! Нужна помощь с задачей о обедающих философах сделанная не на потоках как здесь...

Обедающие философы - C#
Всем привет. Нужна помощь в решении задач об обедающих философах с помощью семафоров, мониторов и блокировки. Также нужно добавить главный...

Обедающие философы, перевод с Delphi - C#
«Проблема обедающих философов» Программная реализация задачи на языке Delphi, нужно перевести в с# windows forms main.pas unit...

.NET 4.x Обедающие философы. Решение методом монитора - C#
Здравствуйте. Ищу решения проблемы обедающих философов методом монитора( он же официант, арбитр и т.д.) Есть у кого готовый код?

Обедающие философы, уменьшить возможность возникновения deadlock-а - Java SE
Есть программа, которая решает задачу обедающих философов.public class Phil { int pos; Fork left; Fork right; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
20.04.2014, 17:07 #2
Эта задача актуальна для многопоточной среды
0
IrineK
Заблокирован
20.04.2014, 17:12 #3
Условие задачи

Проблема обедающих философов
0
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.04.2014, 17:22  [ТС] #4
Voivoid, подробнее можно?
просто он настаивает на том, что он циклом сможет решить эту задачу и никакой синхронизации не надо. Говорит: "докажи обратное".
Зачем то ещё пример работы планировщика задач приводил в NT системе. Дословно не помню, но смысл заключался в том, что процессы работают с всокими приоритетами и работают и не дают возможности запустится процессу с низким приоритетом, а потомм планировщик берёт и повышает приоритет процесса, который ожидал и он выполняется.(что-то типо того).
Это он дал в пример, когда сказал "давай, вот запустим на многопроцессорной системе".
В итоге: надо ему объяснить, что именно решает данная задача, если накормить философов, то их накормить можно и циклом.

Добавлено через 2 минуты
IrineK, я с книги брал условие, там аналогичное
0
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
20.04.2014, 18:04 #5
Цитата Сообщение от танкист34 Посмотреть сообщение
что именно решает данная задача
Задача решает проблему взаимных блокировок. Задача ставится именно в контексте параллельных вычислений.
Цитата Сообщение от танкист34 Посмотреть сообщение
никакой синхронизации не надо
Синхронизация нужна, ибо вилки, по условию, разделяемый ресурс.
0
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.04.2014, 18:17  [ТС] #6
DrOffset, а если цклом, то его получится распараллелить? или же он будет выполнятся строго одним потоком (процессом)
0
IrineK
Заблокирован
20.04.2014, 18:23 #7
Здесь однопоточное решение на Java
0
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.04.2014, 18:39  [ТС] #8
я кажется понял, здесь подразумевается то, что каждый философ это отдельный процесс.
Цикл в данном случае не подходит по тому, что мы не знаем какой из процессов обратится первым к разделяемому ресурсу, так как время раздумия надо рассматривать динамиччески(что в цикле не возможно, там мы зададим строго определенный интервал, а в реальности процесс может запросить ресурс в любое время т.е. цикл будет не оптимален).
Забыл где, но где - то читал пример про принтеры на семафорах, там похожая ситуация.
Но всё равно он завтра с циклом прикопается скорее всего, ладно, всем спасибо, как узнаю правильный ответ напишу, может кому пригодится.
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
20.04.2014, 18:44 #9
Очевидно, что в общем случае цикл можно крутить только в одном потоке
0
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.04.2014, 18:47  [ТС] #10
Цитата Сообщение от Voivoid Посмотреть сообщение
Очевидно, что в общем случае цикл можно крутить только в одном потоке
что значит в общем случае? значит может быть и не в одном?
0
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
20.04.2014, 18:51 #11
танкист34, для начала неплохо бы выяснить что конкретно предлагается решать циклом и как это будет выглядеть.
Нужно исходить из того, что каждый философ обозначает параллельную задачу.

Добавлено через 1 минуту
танкист34, вот здесь есть несколько решений на разных языках. В том числе на С и С++.
0
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.04.2014, 18:59  [ТС] #12
DrOffset, спасибо, у меня решение имеется.
Да я то понимаю, что каждый философ (это как разная задача == процесс), НО это надо ещё преподователю доказать, что он не сможет это циклом решить. Особенно против довода, что если выполнять эту задачу на многопроцессорной системе с помощью семафоров, то один из философов может не поесть, а циклом все покушают. Хотя странно, что он не поест никогда, ведь он в очередь встанет.
0
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
20.04.2014, 19:01 #13
Если под циклом подразумевается последовательная кормежка философов (т.е. по очереди), то да, можно так решать. Но это будет решение совсем другой задачи Ведь эта задача ставилась в контексте того, что каждый философ - это отдельный, параллельный поток.
Преподаватель похоже тебя провоцирует просто.
0
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.04.2014, 19:07  [ТС] #14
DrOffset, а тогда получается, если мы как вы говорите организуем последовательную кормёжку, то в каждый момент будет кушать только один философ, или же можно по двое?
если по двое можно, то параллельность будет(блин я уже как препод стал рассуждать), что скорее всего он мне так и скажет, если я ему про параллельность скажу.
0
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
20.04.2014, 19:11 #15
Цитата Сообщение от танкист34 Посмотреть сообщение
DrOffset, а тогда получается, если мы как вы говорите организуем последовательную кормёжку, то в каждый момент будет кушать только один философ, или же можно по двое?
Ну вот смотри, давай разберемся. Допустим у нас три философа. По условию задачи, вилки лежат между ними, получается вилки тоже три. Как ты сможешь без конкуренции за третью вилку запустить сразу двух обедать? Правильно, никак.
Именно проблему этой конкуренции и призвана решать данная задача.
1
20.04.2014, 19:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru