8 / 8 / 6
Регистрация: 29.01.2014
Сообщений: 61
|
||||||
1 | ||||||
Многопоточность. Читетель и много писателей13.05.2015, 11:22. Показов 5310. Ответов 3
Метки нет (Все метки)
Здравствуйте,
необходимо решить проблему "Читатели-писатели". с учетом следующих ограничений: Есть общий ресурс, из которого можно читать или писать. В системе есть N потоков читателей и M потоков писателей. Они работают так: в бесконечном цикле сначала спят случайный интервал времени, потом пытаются получить доступ на чтение/запись, после получения доступа выполняют эту операцию случайный интервал времени. Чтение может происходить несколькими потоками одновременно, но не больше K. Когда какой-то из потоков производит запись, остальные не должны иметь доступа к ресурсу. Если писатель пишет, никто другой не может иметь доступа к ресурсу.Если писатель хочет записывать, но в это время читатели читают, он должен ждать, пока читатели завершат чтение, но другие читатели уже не могут начинать чтение, пока писатель не начнет записть. Результаты работы программы должны отображаться в консоли по мере их появления, как показано ниже. Вывод должен быть синхронизированным, т.е. последовательность строк в логе должна соответствовать последовательности 12:01:10.353 Читатель 1 хочет читать. | Ресурс свободен. 12:01:10.354 Читатель 1 начал чтение. | Читатель 1 читает. 12:01:10.453 Читатель 2 хочет читать. | Читатель 1 читает. 12:01:10.456 Читатель 2 начал чтение. | Читатели 1, 2 читают. 12:01:11.000 Писатель 1 хочет писать. | Читатели 1, 2 читают. 12:01:11.001 Читатели 1 и 2 прерваны. | Ресурс свободен. 12:05:11.005 Писатель 1 начал запись. | Писатель 1 пишет. 12:06:30.300 Читатель 1 хочет читать. | Писатель 1 пишет. Читатель 1 ожидает. Вот что получилось у меня. При таком иполнении потоки-читатели не могут добраться к ресурсу вообще. Может ли кто помочь исправить код. Спасибо большое!
0
|
13.05.2015, 11:22 | |
Ответы с готовыми решениями:
3
Сформировать файл "BOOK" из фамилий любимых писателей учеников класса (ученики по очереди вводят по три фамилиии писателей). Используя сформированный Обсудим *писателей* олимпиад по программированию ?) Интересные фразы от писателей и писательниц Сайт с большим числом писателей |
63 / 63 / 28
Регистрация: 18.03.2014
Сообщений: 794
|
|
13.05.2015, 12:46 | 2 |
В код сильно не вникал, что могу сказать, для данной цели почитайте про synhronized
0
|
8 / 8 / 6
Регистрация: 29.01.2014
Сообщений: 61
|
|
13.05.2015, 19:04 [ТС] | 3 |
Да я знаю про это, но дело в том, что при использовании wait()/notify()/notifyAll() возникает другая проблема: как при освобождении ресурса оним читателем освободить его только для читателей, а писателя оставить торчать внутри wait()?
Может синхронизироваться по разных обьектах?
0
|
Автоматизируй это!
|
|
13.05.2015, 19:36 | 4 |
может очередь попробовать?
Добавлено через 12 минут хотя нет, у тебя вроде и так все нормально...сейчас код посмотрю
0
|
13.05.2015, 19:36 | |
13.05.2015, 19:36 | |
Помогаю со студенческими работами здесь
4
Межпроцессная синхронизация: проблема читателей и писателей Создать список - combobox из пяти писателей Создаю прогу для технических писателей Работа для программистов и техн.писателей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |