![]() |
|
|
![]()
|
|
| gpepsi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 14.3.2010 Репутация: нет Всего: нет |
Есть ли где готовая реализация ?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
boost
|
|||
|
||||
| _GRIN_ |
|
||||||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
gpepsi, если я правильно тебя понял - то так:
лог выполнения
P.S. Решение для кьюта - но в stl можно аналогично релизовать Это сообщение отредактировал(а) _GRIN_ - 4.1.2012, 21:55 -------------------- Дорогу осилит идущий |
||||||
|
|||||||
| gpepsi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 14.3.2010 Репутация: нет Всего: нет |
Хочу усложнить задачу - нужна потоко-безопастная очередь...
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
gpepsi, добавь мьютекс и будет тебе безопасная.
|
|||
|
||||
| gpepsi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 14.3.2010 Репутация: нет Всего: нет |
bsa, слишком просто
Пусть есть один читатель и сотня писателей. Если у какого писателя после захвата мьютекса произойдет переключение контекста, то все остальные писатели и читатели будут курить в холостую |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
||||
|
||||
| _GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
Используй QReadWriteLock http://developer.qt.nokia.com/doc/qt-4.8/QReadWriteLock.html -------------------- Дорогу осилит идущий |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
неправильно. писатель имеет абсолютную "власть" над читателями. по этому, пока писатель не вернул ресурс, читатели курят. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Но судя по коду ты и этого не осилил.
Это сообщение отредактировал(а) bsa - 15.1.2012, 17:21 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
в данной задаче, полагаю, такой способ будет оправдан. но... в реально производительной задаче, нужно подбирать гранулярность элементов задачи так, чтоб не было слишком мелких элементов, что приведет к накладным расходам, и чтоб не было слишком больших, ибо это приведет к ухудшению параллелизма. второе - чтоб добиться максимального параллелизма, каждый поток должен как можно реже работать с общими данными. Это сообщение отредактировал(а) boostcoder - 15.1.2012, 19:14 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
boostcoder, другими словами, ты хочешь сказать, что надо менять вообще способ решения задачи, а не пытаться решить ее крутой кольцевой очередью. Я правильно понял?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
опять же - зависит от задачи. если задача не критична к производительности - так оставить эту очередь с мьютексом если же наоборот, критична - то три способа(от худшего к лучшему): 1. общая lock-free очередь. 2. на каждый поток по lock-free очереди. 3. новый паттерн disruptor. недавно обсуждали с drug007. посмотри его темы. Добавлено через 2 минуты и 32 секунды это да. но читать нужно начинать с самой ранней темы, и до последней. и желательно дважды. |
|||
|
||||
| gpepsi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 14.3.2010 Репутация: нет Всего: нет |
попробовал набросать
но что-то очередь медленная. Я читаю с нее очень медленно. Может я сто-то с синхронизацией намутил ? |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |