2009-12-11 5 views
2

Я использую шаблон активного объекта.Синхронизированный список для потокового приложения

Мне нужен список, в котором хранятся определенные пользователем объекты того же типа. Несколько авторов нажимают объекты на список, и читатели могут ждать в очереди по времени.

Я знаю, что могу обернуть список STL, но может быть, там готовое решение в boost? Я просто не могу его найти.

UPD:

Приложение работает на Linux (RHEL 5.3).

ответ

1

Существует, это называется мьютексом. (Запираемый для повышения).

0

Нет уже построенного решения, но вы найдете кирпичи, в которых вы нуждаетесь. Взгляните на библиотеку boost :: thread или документы в библиотеке потоков, которые вы используете в настоящее время, чтобы узнать, как предоставляется эксклюзивный доступ. Обычно это происходит через mutex.

0

Если вы используете окна, то microsoft предоставляет код из множественного списка пользователей с несколькими пользователями.

Посмотрите Interlocked Singly Linked Lists

+0

Если вы хотите в заказе на потребление, то SLIST ограничиваются множественным производителем/одиночного -consumer. – Adisak

+0

Следует учитывать, что «Блокированные одиночные списки списков» имеют только 32 бит. – paxos1977

+0

Не правда, MS предоставили 128-битную версию через "cmpxchg16b" – Goz

0

Этот тип контейнера называется ограниченным/блокировка очереди

Попробуйте this Codeproject страницы для переменного тока # например

Вся концепция объяснена очень хорошо в книге «Concurrent Программирование на Windows 'от Joe Duffy

0

Если объекты имеют тип POD, вы можете записать их в гнездовую пару на Linux и получить ожидаемое поведение.

Смежные вопросы