Сообщение Re[2]: Аргументы против vector<unique_ptr<T>> от 25.01.2017 1:27
Изменено 25.01.2017 2:21 Артём
Re[2]: Аргументы против vector<unique_ptr<T>>
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Там ещё и deleter хранится, ещё и thread-safe(атомарные) передёргивания счётчика (но, справедливости ради, если тебе было достаточно movable unique_ptr, то и передёргиваний быть не должно, ибо при перемещениях нет нужды дёргать счётчик), а если ещё и создавать не через std::make_shared то и вовсе лишняя аллокация.
Слона-то я и не заметил (атомарный счётчик) — это значит memory barrier по counter и по deleter должен быть.
EP>Там ещё и deleter хранится, ещё и thread-safe(атомарные) передёргивания счётчика (но, справедливости ради, если тебе было достаточно movable unique_ptr, то и передёргиваний быть не должно, ибо при перемещениях нет нужды дёргать счётчик), а если ещё и создавать не через std::make_shared то и вовсе лишняя аллокация.
Слона-то я и не заметил (атомарный счётчик) — это значит memory barrier по counter и по deleter должен быть.
Re[2]: Аргументы против vector<unique_ptr<T>>
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Там ещё и deleter хранится, ещё и thread-safe(атомарные) передёргивания счётчика (но, справедливости ради, если тебе было достаточно movable unique_ptr, то и передёргиваний быть не должно, ибо при перемещениях нет нужды дёргать счётчик), а если ещё и создавать не через std::make_shared то и вовсе лишняя аллокация.
Слона-то я и не заметил (атомарный счётчик) — это значит memory barrier по counter и по deleter должен быть.
PS использовал emplace_back(new Concrete())
EP>Там ещё и deleter хранится, ещё и thread-safe(атомарные) передёргивания счётчика (но, справедливости ради, если тебе было достаточно movable unique_ptr, то и передёргиваний быть не должно, ибо при перемещениях нет нужды дёргать счётчик), а если ещё и создавать не через std::make_shared то и вовсе лишняя аллокация.
Слона-то я и не заметил (атомарный счётчик) — это значит memory barrier по counter и по deleter должен быть.
PS использовал emplace_back(new Concrete())