Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > treadthafeness of stl containers


Автор: ano360 19.7.2011, 21:20
Добрый день.
Интересует вопрос потокобезопасности stl контейнеров.
Какие операции с какими контейрерами считаются threadthsafe?

для всех контейнеров только чтение-чтение ?


благодарю всех уделивших внимание.

Автор: azesmcar 19.7.2011, 21:22
Цитата(ano360 @  19.7.2011,  21:20 Найти цитируемый пост)
Щни потоконебезопасны

нет.

Цитата(ano360 @  19.7.2011,  21:20 Найти цитируемый пост)
Какие операции с какими контейрерами считаются threadthsafe?

для некоторых реализаций STL даются гарантии
  • потокобезопасность чтения и записи разных контейнеров
  • потокобезопасность чтения одного контейнера

Автор: ano360 19.7.2011, 21:26
можно подробнее? гуглеж пока не дал результатов, если сам днайду - отпишусь.

Автор: azesmcar 19.7.2011, 21:27
Цитата(ano360 @  19.7.2011,  21:26 Найти цитируемый пост)
можно подробнее? 

о чем именно подробнее?

Автор: ano360 19.7.2011, 21:35
какие операции с какими stl контейнерами считаются потокобезопасными?
преимущетсвнно интересует реализация из VS 2005й 

Автор: azesmcar 19.7.2011, 21:42
Цитата(ano360 @  19.7.2011,  21:35 Найти цитируемый пост)
какие операции с какими stl контейнерами считаются потокобезопасными?

все операции чтения одного и того же контейнера, все операции чтения и записьи разных контейнеров.
говоря чтение, я имею ввиду такие операции, как find, size(), empty(), итерации по контейнерам...
естественно, когда один поток читает, а второй записывает, это не потокобезопасно.

Цитата(ano360 @  19.7.2011,  21:35 Найти цитируемый пост)
преимущетсвнно интересует реализация из VS 2005й  

конкретно по стандарту вообще ничего не потокобезопасно, в стандарте о потоках речи не идет, в VS2005 стоит http://www.dinkumware.com/. Про гарантии этой реализации можно прочитать http://www.dinkumware.com/manuals/?manual=compleat&page=thread_safety.html.
Цитата

Multiple threads can safely read the same container object. (There are no unprotected mutable subobjects within a container object.)
Two threads can safely manipulate different container objects of the same type. (There are no unprotected shared static objects within a container type.)
You must protect against simultaneous access to a container object if at least one thread is modifying the object. (The obvious synchronization primitives, such as those in the Dinkum Threads Library, will not be subverted by the container object.)

Автор: ano360 19.7.2011, 21:49
спасибо. 
какие библиотеки с потокобезопасными(в разной мере) контейнерами существуют, кроме 
tbb и аналогичной майкрософтовской разработки(забыл как называется) ?

Автор: azesmcar 19.7.2011, 21:53
Цитата(ano360 @  19.7.2011,  21:49 Найти цитируемый пост)
какие библиотеки с потокобезопасными(в разной мере) контейнерами существуют, кроме 
tbb и аналогичной майкрософтовской разработки(забыл как называется) ?

других к сожалению не знаю, можно поискать в интернете, но встанет вопрос о надежности. А чем Tbb не устраивает?

Автор: ano360 20.7.2011, 15:10
хотелось бы иметь представление обо всех альтернативах

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)