Информация об изменениях

Сообщение Re[3]: COW устарел, осторожнее с его использованием? от 23.08.2022 23:32

Изменено 23.08.2022 23:34 SaZ

Re[3]: COW устарел, осторожнее с его использованием?
Здравствуйте, pax123, Вы писали:

P>Да, я понял. Проблема не столько в COW как таковом, а в его применении для стандартных контейнеров. А так — вполне можно сделать COW контейнер, просто надо указать, что между потоками нужно глубокое копирование/клонирование


Чтобы это сделать, надо для каждой строки будет хранить thread id и запрашивать его на каждый чих. Тоже слишком оверхед. На самом деле, если нужны такие жёсткие оптимизации, то всегда можно сделать узкоспециализированными строками.


P>>>Не совсем понял, а когда это строки стали thread safe?


SaZ>>Я так понял, что тут имелась в виду самописная реализация. Несколько нетривиально сделать корректный неблокирующий контейнер. Не будешь же с каждой строкой таскать мьютекс.


P>Стандартные контейнеры все вроде не тред сейф


Смотря что понимать под "стандартными" и "тред сейф". В Qt это QSharedData и релевантные. Сам COW — всегда потокобезопасный, работа с элементами — нет.
Re[3]: COW устарел, осторожнее с его использованием?
Здравствуйте, pax123, Вы писали:

P>Да, я понял. Проблема не столько в COW как таковом, а в его применении для стандартных контейнеров. А так — вполне можно сделать COW контейнер, просто надо указать, что между потоками нужно глубокое копирование/клонирование


Чтобы это сделать, надо для каждой строки будет хранить thread id и запрашивать его на каждый чих. Тоже слишком оверхед. На самом деле, если нужны такие жёсткие оптимизации, то всегда можно сделать узкоспециализированными строками.


P>>>Не совсем понял, а когда это строки стали thread safe?


Я так понял, что тут имелась в виду самописная реализация. Несколько нетривиально сделать корректный неблокирующий контейнер. Не будешь же с каждой строкой таскать мьютекс.

P>Стандартные контейнеры все вроде не тред сейф


Смотря что понимать под "стандартными" и "тред сейф". В Qt это QSharedData и релевантные. Сам COW — всегда потокобезопасный, работа с элементами — нет.