Здравствуйте, ksd, Вы писали:
L>>Код выше нельзя в общем случае сделать потокобезопасным средствами контейнера.
ksd>это еще почему?! итератор может же в операторе ++ поинтересоваться, обновился контейнер или нет?
Может. Ну, допустим, обновился (если раньше не упадет, см. ниже). Дальше что?
Далее:
some_type do_something_with(const some_other_type& what)
{
//....
}
for (auto i = container.begin(); i != container.end(); ++i)
{
auto some_value = do_something_with(*i); // А в этот прекрасный момент другой поток делает контейнеру clear()
}
Иными словами, попытка изобрести универсальный потокобезопасный контейнер ни к чему хорошему не приводит.