|
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 19
|
||||||
Классическая задача Дж. Рихтера "Читатели-писатели" с приоритетом писателей19.06.2022, 22:37. Показов 3389. Ответов 10
Здравствуйте, получил недавно задачу реализовать код Дж. Рихтера "Писатели-читатели", только наоборот.
То-есть приоритет у писателей, а не читателей. Можете помочь решить проблему, а то долго пытался понять, читал учебник Дж. Рихтера и не особо понял. Reader_Writer.cpp
Вложение 1352258 Добавлено через 21 секунду Нужно переделать (создать) код, отличающийся от кода ниже, где приоритет будет у писателей.
0
|
||||||
| 19.06.2022, 22:37 | |
|
Ответы с готовыми решениями:
10
Задача Читатели-Писатели Синхронизация нитей. Задача читатели-писатели Читатели-писатели |
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,099
|
|
| 20.06.2022, 08:45 | |
|
WaterCory, вам нужна блокировка чтения-записи (RW-lock) с приоритетом записи?
У винды с некоторых пор есть подобный объект синхронизации Slim Reader/Writer (SRW) Locks. Существуют и самописные решения. К примеру, вот некий Махмуд навоял свою реализацию и выложил на github. Полагаю, есть и другие готовые решения. Или вам непременно нужен свой велосипед? Тогда хорошо бы понять, что в нём можно использовать из имеющихся в C++/WinApi примитивов синхронизации.
1
|
|
|
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 19
|
|
| 20.06.2022, 09:22 [ТС] | |
|
Как я понял с пояснений одного человека, нужно изменить готовый код и те функции которые он имеет, чтобы поменять местами приоритет читателей на писателей. Например, поменять местами переменные и тд
0
|
|
|
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 19
|
|
| 20.06.2022, 09:29 [ТС] | |
|
Если описать самым тупым языком, то при включении приложения в консоли спамится на каждой строчке "Прочитал", а должно быть наоборот, чтобы спамилось "Записал".
Тоесть допустим поменять местами переменные mutAcc mutRC mutWC если нужна сама реализации могу скинуть
0
|
|
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,099
|
||
| 20.06.2022, 09:52 | ||
Сообщение было отмечено WaterCory как решение
РешениеНо, сдаётся мне, что вы что-то неправильно поняли. Приоритет чтения обусловлен алгоритмом совместной работы. Чтение может работать параллельно с другим чтением и не может работать параллельно с записью. Запись не может работать параллельно с чтением или другой записью. Если вы просто поменяете местами переменные, то запись начнёт работать параллельно с другой записью, а чтение перестанет работать параллельно с другим чтением.
0
|
||
|
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 19
|
|
| 20.06.2022, 10:05 [ТС] | |
|
Честно, сам не особо понял, пояснения к этой задаче нет. был дан код выше с приоритетом читателей и дана задача изменить этот код так, чтобы был приоритет у писателей, как я понял поменяв текст сообщения ничего не измениться, надо написать похожий код, на основе того что скинул, только для приоритета писатеоей
Добавлено через 1 минуту Как я понял надо написать такой же код где у переменной писатели будет приоритет (поменять местами переменные)
0
|
|
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,099
|
|
| 20.06.2022, 13:07 | |
|
WaterCory, нашёл сравнительно простенькую реализацию RW-блокировки на WinAPI за авторством Glenn Slayden написанную им аж 20 лет назад. Можете попытаться адаптировать её под свои нужды. Критические секции можно заменить семафорами, но с ручным ивентом вряд ли такое пройдёт.
0
|
|
|
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 19
|
|
| 20.06.2022, 14:42 [ТС] | |
|
Немного не то, но спасибо, буду дальше думать, как нужный код переделать
0
|
|
|
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 19
|
|
| 22.06.2022, 20:24 [ТС] | |
|
UPD.
Надо дополнить этот код функцией Писателя, аналогичной функции читателя, поменяв переменные. А также цикл фор должен исходить из писателя, а не как в примере у читателя Добавлено через 3 минуты Слушай, если еще есть время помочь, то есть критерии. Надо дописать функцию для писателя, идентичную функции для писателя (ну и переменные местами поменять). А цикл For должен исходит из писателя, а не читателя.
0
|
|
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,099
|
|||||||
| 23.06.2022, 12:50 | |||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||
|
|
||||||
| 24.06.2022, 12:34 | ||||||
|
вот здесь описано как сделать нужный приоритет
0
|
||||||
| 24.06.2022, 12:34 | |
|
Помогаю со студенческими работами здесь
11
Читатели - писатели Читатели - Писатели через терминалы Семафоры: решение задачи "Читатели/писатели"
"Читатели-Писатели" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|