COW устарел, осторожнее с его использованием?
От: pax123  
Дата: 23.08.22 18:24
Оценка:
Привет!

Наткнулся на статью — C++ велосипедостроение для профессионалов / Хабр.
Там пишут следующее:

Начиная с C++11 COW строчки запрещены в стандарте. Там наложены специальные условия на строчку, что COW реализовать невозможно. Все современные имплементации стандартных библиотек не имеют COW строк.

COW устарел, осторожнее с его использованием.
Аккуратнее используйте COW в новых проектах. Не доверяйте статьям, которым больше 10 лет, перепроверяйте их. COW не показывает таких хороших результатов, как 20 лет назад.


В чем проблема с COW?


Там еще перед этим есть string: COW MT fixes

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


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