Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257

Задача читателей и писателей: автоопределение приоретета

26.03.2012, 14:07. Показов 4115. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется реализовать задачу читателей и писателей, которая будет в зависимости от создаваемых процессов определять какой приоретет выбрать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2012, 14:07
Ответы с готовыми решениями:

Межпроцессная синхронизация: проблема читателей и писателей
Возможно ли сделать решение проблемы читателей и писателей ? - читателей много - пишет лишь один: пока он пишет никто иной не может ни...

Логическая задача про писателей и количество рассказов.
Здравствуйте! Помогите мне разобраться с этой задачей Три писателя обсуждают, сколько рассказов они написали за последний месяц....

Сформировать файл "BOOK" из фамилий любимых писателей учеников класса (ученики по очереди вводят по три фамилиии писателей). Используя сформированный
Помогите пожалуйста. Вот задача: Сформировать файл "BOOK" из фамилий любимых писателей учеников класса (ученики по очереди вводят по...

5
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
26.03.2012, 17:28
а что такое в этой задаче приоритеты?
Это когда читатель с более высоким приоритетом может начать чтение, если в ожидании писатель с меньшим приоритетом?

Не по теме:

Что-то не уверен, что я вполне по-русски это написал...

0
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257
26.03.2012, 18:50  [ТС]
villu, да, есть 2 известных способа реализации. Но и такой способ тоже существует, автоопределение по потоку, приоритеты на ходу меняются, то есть если слишком большой поток читателей, то приоритет у писателя, иначе наоборот. Но где этот алгоритм найти...
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
26.03.2012, 21:51
ок, можно в принципе подумать. Интересно.
Есть, как было сказано, 2 способа.
1: читатели увеличивают счетчик при входе в критическую секцию, и уменьшает, когда выходит, а писатель ждет, когда счетчик станет нулем и только тогда начинает писать, после этого читатели ждут пока писатель не закончит.
2: читатели прекращают увеличивать счетчик, если писатель встал в ожидание и ждут, пока писатель не разлочится (когда выйдет из секции записи)

Вот второй способ и можно изменить под приоритеты.

Допустим у нас в ожидание впал писатель с приоритетом 1, значит любые читатель с приоритетом 0, либо 1 будут его ждать, а читатели с приоритетом 2 и выше могут увеличивать счетчик читателя...
Но когда писатель начал писать, уже ни один читатель с любым приоритетом не может увеличить счетчик.

я правильно понял задачу?
1
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257
27.03.2012, 21:10  [ТС]
villu, впринципе так, только я не понял про нумарацию приоритетов. Идея такова, что если большой поток читателей, то приоритет у писателя. Как бы вот я делаю pthread_create на писателей и читателей так, чтобы одновременно забилась всё в очередь и выводился такой вот текст:
Писатель 1 подошёл к библиотеке.
Писатель 2 подошёл к библиотеке.
Читатель 1 подошёл к библиотеке.
Читатель 2 подошёл к библиотеке.
C++
1
2
3
4
5
6
7
8
9
10
11
12
//пример функции писателя
void *writer(void *arg)
{
 int loc_id=*(int*)arg;
 sem_post(&temp_s);
 while (1)
  {
   printf("Писатель %d подошёл к библиотеке\n",loc_id);  
//и т.д.
  }
 return NULL;
}
с читателем так же.
После того как все подошли уже и они получили свою очередь там в памяти и программа уже по той очереди по которой они идут сама генерирует кому как идти
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
28.03.2012, 12:25

Не по теме:

Вчера писал-писал, а ворум сказал "Database error"


ну так вот.
Если есть очередь, то проблемы как бы совсем нет.
В очередь становятся и писатели и читатели, причем читатели, идущие подряд допускаются все вместе, до следующего писателя, который допускается монопольно.

Еще вариант, когда нет очереди.
Но тут есть вариант присваивания приоритета "на лету" каждому пришедшему в зависимости от количества таких же (читателей или писателей).
Сейчас подумаю как это покрасивее описать. А то в голове крутится, а вот русским языком это описать ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2012, 12:25
Помогаю со студенческими работами здесь

Автоопределение монитора
У меня два монитора подключено к одной видеокарте. Один по цифровому другой по аналоговому каналу. Если выключить монитор который на...

Автоопределение кодировки
есть вот такая программа: import java.awt.event.*; import java.io.BufferedReader; import java.io.IOException; import...

Автоопределение строк в ЛистБокс
Ребят, есть ЛистБокс и при нажатии кнопки - происходит нахождение определенных документов ворд (пример:1.1., 1.2, 2.3 и т.д.) с флешки и их...

Автоопределение длины строки
char f; cout<<"Vvedite stroku->; cin>>f; Как заставить компилятор определять длину строки, чтобы не тратить зря память, выделяя ее на...

Delphi. Автоопределение кодировки
Добрый вечер!!! помогите разработать на Delphi "Текстовый редактор" с автоопределением кодировки. Смена кодировки (MS-DOS (CP 866), Windows...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru