Threadsafe очередь

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Threadsafe очередь

Сообщение Иван Шихалев » 03.05.2009 21:26:20

Вопрос, скорее, к обсуждению — могут быть разные варианты...

Задача следующая: организовать очередь данных, передаваемых между потоками. Причем формирование данных происходит блоками — блок сформирован, передан, дальше с ним работает только принимающий поток. Какие-либо конфликты могут возникнуть только в самой очереди.

Какие будут соображения?

Добавлено спустя 47 секунд:
Да, и очень желательно, чтобы механизм был кроссплатформенный.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Threadsafe очередь

Сообщение *vmr » 04.05.2009 00:07:30

Давно использую закольцованный буффер-FIFO, с абсолютными индексами: http://en.wikipedia.org/wiki/Circular_queue
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

Re: Threadsafe очередь

Сообщение Иван Шихалев » 04.05.2009 00:13:09

Зачем кольцевать? На чем блокировки делать?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Threadsafe очередь

Сообщение *vmr » 04.05.2009 00:21:26

В том то и фишка что из-за закольцованности-абсолютности-индекса блокировки не нужно делать.
Смотри по ссылке внимателней.

Добавлено спустя 2 минуты 22 секунды:
Т.е. имеем lock-free очередь
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

Re: Threadsafe очередь

Сообщение Иван Шихалев » 04.05.2009 00:31:51

Ничего не понял, честно говоря... Попробую завтра, выспавшись.

Добавлено спустя 18 часов 20 минут 25 секунд:
Я правильно понял, что блокировки не нужны, поскольку каждый из индексов изменяется только «своим» потоком (хотя и проверяется обоими)?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru