Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
kevi
5 / 0 / 1
Регистрация: 25.09.2014
Сообщений: 10
1

Реализация класса "Многопоточная очередь"

01.11.2014, 22:05. Просмотров 1473. Ответов 3
Метки нет (Все метки)

Добрый вечер!
Может вопрос немного глупый, но..
Задание: Нужно реализовать класс многопоточной очереди
есть вопрос:
Например, размер очереди 100 элементов, и я хочу реализовать это 5-ю потоками, как это нужно сделать:
создать пять потоков, КАЖДЫЕ из которых создают 100 элементов или всего создается 100 элементов, добавление которых распределяется между пятью потоками (как сделать это распределение?)?

Добавлено через 8 минут
Подробнее о задаче: Нужно реализовать класс очереди в многопоточной среде с возможностью добавления и извлечения элемента.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2014, 22:05
Ответы с готовыми решениями:

Необработанное исключение в "0x77913ab3" в "x": 0xC0000005: Нарушение прав доступа при чтении "0xdddddddd"
вот код, нужно найти 3 минимальных положительных числа в массиве. При размере массива больше 950 в...

Задача "Производители-Потребители", реализация с помощью Events и циклического буфера
Доброго времени суток. Написал программу для решения сабжевой задачи, с условиями 1...

Функция оператора "+" класса valarray, нужен пример
valarray<T> operator+() const; Друзья, дайте пример использования такого кода. Насколько я...

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz")
Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz").

Ошибка: invalid conversion from "int" to "SDL_RendererFlip"
Скриншот приложен, Вот страница, откуда я брал этот код Подскажите что делать

3
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.11.2014, 01:38 2
В Boost уже есть потокобезопасные очереди и стеки, подробности тут: Boost.Lockfree Как написать подобную очередь самому рассматривается в книге "Энтони Уильямс - Параллельное программирование на С++ в действии".
1
kevi
5 / 0 / 1
Регистрация: 25.09.2014
Сообщений: 10
02.11.2014, 13:24  [ТС] 3
DiffEreD, я не совсем понимаю как это протестировать, куда подавать многопоточность, что должно быть в управляющей потоком функции.. Например, я создаю некоторое количество потоков
C++
1
thread(doWork, ref(workQueue))
а что мне нужно реализовывать в функции doWork?
И нужно ли применять многопоточность при создании и заполнении очереди?

Добавлено через 17 минут
Только что нашел статью с примером http://www.boost.org/doc/libs/1_54_0/doc/html/lockfree/examples.html
Я правильно понял, что для организации многопоточной очереди нужно создать управляющие функции производитель (producer) и потребитель (consumer)?
0
Dmitriy_M
1433 / 1313 / 131
Регистрация: 20.03.2009
Сообщений: 4,688
Записей в блоге: 11
02.11.2014, 19:41 4
kevi, да.
Существуют несколько сценариев:
1) 1 производитель и N потребителей;
2) N производителей и 1 потребитель;
3) N производителей и M потребителей.
Тебе нужно будет протестировать все эти варианты.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2014, 19:41

О "нестабильности" или "переполнении" цикла foreach
Здравствуйте, коллеги. Недавно коллега-программист сообщил мне страшную вещь: оказывается, что...

CString buff = "aaa" + "bbb"
Хочется одним оператором конкатенировать несколько подстрок CString buff = "aaa" + "bbb"...

Qt Creator. Все "за" и "против"
Доброго времени суток, форумчане! Сегодня задался вопросом использования такой IDE, как Qt Creator....


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

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

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