Здравствуйте, landerhigh, Вы писали:
L>Здравствуйте, ksd, Вы писали:
ksd>>возможен ли готовый хороший субж в природе?
L>Нет. Но если возник такой вопрос, то самый правильный ответ — нужно продумывать архитектуру.
ksd>>(вектор, лист, сет или их аналоги -- все подойдет)
L>Сферической потокобезопасности в вакууме не бывает. Ее можно натянуть на контейнеры, которые используются исключительно через операции единичной вставки/чтения (очередь, к примеру)
L>Попытка сделать "потокобезопасными" контейнеры, по которым необходимо итерироваться, в конечном итоге приводит к куче проблем и выкорчевыванию "изобретения" из проекта.
L>L>for (auto i = container.begin(); i != container.end(); ++i)
L>{
L> auto some_value = do_something_with(*i);
L> call_some_other_code(some_value);
L> // another 100500 lines of code
L>}
L>
L>Код выше нельзя в общем случае сделать потокобезопасным средствами контейнера.
это еще почему?! итератор может же в операторе ++ поинтересоваться, обновился контейнер или нет?