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