Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 16.12.2015
Сообщений: 1
1

Задача "читателя и писателя" с буферным пулом (динамическим массивом)

29.11.2017, 13:45. Просмотров 686. Ответов 1

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


Буферный пул в данном случае - динамический массив, если я верно понял преподавателя. По условию задачи поток-читатель и поток-писатель приостанавливаются в ожидании непустого и пустого буфера соответственно.

Каким образом реализовать проверку на наличие пустого-непустого буфера, чтобы активизировались потоки?
Каким образом передавать в поток-читатель или в поток-писатель адрес освободившегося буфера для работы с ним?

Основной принцип работы потоков схож с примером на википедии (тут), но можно решить и с 2 семафорами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2017, 13:45
Ответы с готовыми решениями:

Задача на работу с динамическим массивом. HEAP CORRUPTION DETECTED
Не понимаю причину ошибки. Подскажите пожалуйста. // pmArray.cpp : Defines the entry point...

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость",...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b"
#include <stdio.h> #include <string.h> #include <conio.h> main() { int i; int k; ...

1
811 / 493 / 160
Регистрация: 30.07.2015
Сообщений: 1,623
29.11.2017, 16:44 2
alexgugr, вы сейчас не принцип очереди описали?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2017, 16:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывод игрового поля в игре "крестики-нолики" массивом
Вот у меня есть кусок кода для игры в крестики-нолики , мне нужно сделать так , чтобы часть поля...

"Перевернуть" в строке все слова (Например: "Жили были" в "илиЖ илыб")
"Перевернуть" в строке все слова. (Например: "Жили были дед и баба" - "илиЖ илиб дед и абаб")

Функция замены ":" на "_" в названии файла и ошибка "undefined reference to 'strcat'"
Добрый день,прошу помочь мне с такой проблемой: В общем есть функция,работающая с именем...

Подсчитать количество сдвоенных символов "сс", "нн", "лл" в тексте, расположенном в текстовом файле
Пожалуйста) Подсчитать количество сдвоенных символов сс, нн, лл в тексте, расположенном в текстовом...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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