Re[2]: нужен контейнер, потокобезопасный, с неинвалидирующимися
От: ksd Россия  
Дата: 08.08.18 12:13
Оценка:
Здравствуйте, 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>Код выше нельзя в общем случае сделать потокобезопасным средствами контейнера.

это еще почему?! итератор может же в операторе ++ поинтересоваться, обновился контейнер или нет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.