IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Задача "читатели и писатели", классическая задача синхронизации
LeX
сообщение 14.06.2005 16:57
Сообщение #1


Гость






Задача о читателях и писателях
Задача о читателях и писателях. Базу данных разделяют два типа процессов — читатели и писатели Читатели выполняют транзакции, которые просматривают записи базы данных, а транзакции писателей и просматривают, и изменяют записи. Предполагается, что вначале база данных находится в непротиворечивом состоянии (т.е. отношения между данными имеют .смысл). Каждая отдельная транзакция переводит базу данных из одного непротиворечивого состояния в другое. Для предотвращения взаимного влияния транзакций процесс-писатель должен иметь исключительный доступ к базе данных Если к базе данных не обращается ни один из процессов-писателей, то выполнять транзакции могут одновременно сколько угодно читателей.
Приведенное выше определение касается разделяемой базы данных, но ею может быть файл, связанный список, таблица и т.д
Задача о читателях и писателях — это еще один пример выборочного взаимного исключения. В задаче об обедающих философах пары процессов конкурировали за доступ к вилкам. Здесь за доступ к базе данных соревнуются классы процессов. Процессы-читатели конкурируют с писателями, а отдельные процессы-писатели — между собой. Задача о читателях и писателях — это также пример задачи общей условной синхронизации: процессы-читатели должны ждать, пока к базе данных имеет доступ хотя бы один процесс-писатель; процессы-писатели должны ждать, пока к базе данных имеют доступ процессы-читатели или другой процесс-писатель.

Напишите что надо делать не пойму!!!
Если есть программа буду очень благодарен!!!

P.S очень срочно!!!
 К началу страницы 
+ Ответить 
volvo
сообщение 14.06.2005 17:05
Сообщение #2


Гость






Ты уверен, что тебе в этот раздел, а не в "теорию" хотя бы? Кстати, ты привел описание проблемы, спасибо огромное. Но... Вопроса не видно. В чем проблема?

Вот тут есть кое-что:
4.4.1. Задача о читателях и писателях как задача исключения
5.2.2. Читатели и писатели: сигнал оповещения
 К началу страницы 
+ Ответить 
LeX
сообщение 15.06.2005 12:05
Сообщение #3


Гость






Мне надо программно реализовать задачу "читатели и писатели".
Только я не пойму при каком условии программа в приведенных примерах ссылок заканчивается. И не понятно условие приоритетов читателей и писателей.
Например: указываешь количество читателей и писателей, они получается сколько угодно могут читать и писать. Получается что ли выход при нажатии кокойто клавиши.
А если там я введу 5 читателей и 2 писателя, если первый читатель будет читать потом второй потом и т.д., то как писатель будет писать, если они читают и читают. huh.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 15.06.2005 12:21
Сообщение #4


Гость






Цитата(LeX @ 15.06.05 12:05)
Получается что ли выход при нажатии кокойто клавиши.
А если там я введу 5 читателей и 2 писателя, если первый читатель будет читать потом второй потом и т.д., то как писатель будет писать, если они читают и читают.

Ты, по-моему, не совсем представляешь себе задачу... Это - использование потоков (или процессов), которые выполняются ОДНОВРЕМЕННО (параллельно). Для этого и ставятся семафоры, чтобы дать (или не дать) какому-либо процессу доступ к базе для чтения или записи... И заканчиваться программа должна, когда закончат работу все ее потоки (читатели закончат читать, а писатели - писАть)... На каком языке нужна программа?

(говорю сразу, на TP такое сделать маловероятно, скорее всего FPC или Дельфи)
 К началу страницы 
+ Ответить 
LeX
сообщение 15.06.2005 12:43
Сообщение #5


Гость






В том то и дело что надо на TP7.
И как писать параллельно?
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 21:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"