C ++ Нужны безопасные для резьбы хорошо проверенные контейнеры (не Microsoft) - PullRequest
2 голосов
/ 24 марта 2011

Кто-нибудь имеет представление о поточно-безопасных контейнерах данных, таких как очередь, карта?Я не хочу потокобезопасного STL, когда мы используем ключи / MT для компилятора.

Реальные безопасные для резьбы хорошо проверенные контейнеры STL.

Ответы [ 4 ]

9 голосов
/ 24 марта 2011

Потокобезопасные контейнеры обычно не имеют смысла.Рассмотрим «поточно-ориентированную» очередь:

if(!qu.empty())
{
    // 1
    qu.pop();
}

Что если во время # 1 очередь изменится и станет пустой?Это нарушает код.Вот почему вы должны использовать блокировки в вашем коде, а не в «поточно-безопасных» контейнерах.

1 голос
/ 24 марта 2011

/ MT подразумевает, что вы хотите подключиться к многопоточной библиотеке времени выполнения (которая совместима с многопоточным приложением), но это не делает библиотеку времени выполнения поточно-ориентированной.

1 голос
/ 24 марта 2011

Intel TBB специально разработан для этого.

0 голосов
/ 24 марта 2011

Библиотека параллельных шаблонов Microsoft (PPL) включает в себя concurrent_vector и concurrent_queue, и они добавили параллельные версии unordered_map, unordered_multimap, unordered_set и unordered_multiset в образец пакета Concurrency Runtime v0.33и новее.

...