информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetПортрет посетителяГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] И, кстати, двусторонний вектор в цпп это deque 21.04.03 19:50  Число просмотров: 1179
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
<programming>
[C++] vector и многопоточность 21.04.03 18:17  
Автор: Green Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Есть некоторый vector. Один поток добавляет элементы в его конец, а другой - выбирает из головы, т.е. своеобразная очередь. Понимаю, что вариантов синхронзации может быть множество, но среди этого разнообразия хотелось бы получить самый оптимальный, ведь задача то тривиальная.
[C++] Раз уж эта тема опять поднялась 06.05.03 18:38  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Есть некоторый vector. Один поток добавляет элементы в его
> конец, а другой - выбирает из головы, т.е. своеобразная
> очередь.
А ее "своеобразие" нельзя реализовать посредством std::queue? ;)
Про синхронизацию здесь уже сказали.
[C++] vector и многопоточность 06.05.03 18:21  
Автор: L Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Есть некоторый vector. Один поток добавляет элементы в его
> конец, а другой - выбирает из головы, т.е. своеобразная
> очередь. Понимаю, что вариантов синхронзации может быть
> множество, но среди этого разнообразия хотелось бы получить
> самый оптимальный, ведь задача то тривиальная.

И твой вектор будет бесконечно распухать по мере поступления новых данных. Особенно это приятно, когда реализация STL пользует агрессивную модель выделения памяти.

напиши вокруг буфера минимальнейшую обертку. В числе прочего у тебя там будет целочисленный семафор, который показывает сколько данных готово к обработке, и указатель на начало текущего блока данных.
[C++] vector будет, а deque - нет 06.05.03 18:46  
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 06.05.03 18:49  Количество правок: 1
<"чистая" ссылка>
> И твой вектор будет бесконечно распухать по мере
> поступления новых данных. Особенно это приятно, когда
> реализация STL пользует агрессивную модель выделения
> памяти.
deque - кольцевой буфер. И расти будет только если интенсивность добавляющего потока будет выше интенсивности извлекающего.

> напиши вокруг буфера минимальнейшую обертку. В числе
> прочего у тебя там будет целочисленный семафор, который
> показывает сколько данных готово к обработке, и указатель
> на начало текущего блока данных.
Не надо велосипедов :-)
deque примерно так и работает

ЗЫ: Упомянутая queue по умолчанию как раз просто интерфейс к deque
[C++] vector будет, а deque - нет 06.05.03 19:22  
Автор: L Статус: Незарегистрированный пользователь
<"чистая" ссылка>
>[C++] vector будет, а deque - нет
А я разве что-то говорил что-то про deque?

> Не надо велосипедов :-)
Не надо обобщений.
Простым задачам - простые решения.
Тут, на самом деле, надо у автора интересоваться.
Если он из академического интереса этим занимается - тогда проще, канеш, пользовать готовое. Если нет - для такой простой вещи лучше написать своё, под задачу. Для некоторых задач, к примеру, лучше притормозить поток, генерящий данные, чем аллоцировать память.
[C++] По-моему, без вариантов - сажаешь на целый vector мьютекс 21.04.03 18:39  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
[C++] И, кстати, двусторонний вектор в цпп это deque 21.04.03 19:50  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach