Size: a a a

2020 August 14

АТ

Алексей Тимошенко... in supapro.cxx
noexcept из-за того, что я надеюсь, что мьютекс будет браться всегда. Если он хоть когда-то выбросит експшн в noexcept, то программа закроется - это меня устраивает. А про гонку не понял, все под мутексами же. Мутеккс на запись и чтение
источник

ПК

Побитый Кирпич... in supapro.cxx
Алексей Тимошенко
noexcept из-за того, что я надеюсь, что мьютекс будет браться всегда. Если он хоть когда-то выбросит експшн в noexcept, то программа закроется - это меня устраивает. А про гонку не понял, все под мутексами же. Мутеккс на запись и чтение
Ну у тебя в push, empty и size гонка данных
источник

ПК

Побитый Кирпич... in supapro.cxx
А про noexcept ты неправ. Какой смысл делать Noexcept бросающий метод?

И при чём тут мьютекс? У тебя push_back бросающий
источник

ПК

Побитый Кирпич... in supapro.cxx
noexcept тут с натяжкой можно сделать только empty и size. С натяжкой, потому что в этом нет смысла, минусов больше. А когда ты сделаешь их правильно и потокобезопасно, то и их нельзя будет делать
источник

АТ

Алексей Тимошенко... in supapro.cxx
Я понял. Тогда вопрос если я не ставлю noexcept и не делаю throw, то это лучше, чем программа закроется, если бросится экспшн в noexcept?
источник

ПК

Побитый Кирпич... in supapro.cxx
Алексей Тимошенко
Я понял. Тогда вопрос если я не ставлю noexcept и не делаю throw, то это лучше, чем программа закроется, если бросится экспшн в noexcept?
Лучше конечно. То что ты называешь "программа закроется" это на самом деле краш (std::terminate). Краш это всегда считается ошибкой.
источник

АТ

Алексей Тимошенко... in supapro.cxx
Ну да, я этого и хочу)
источник

DV

Dmitry Vedenko in supapro.cxx
Побитый Кирпич
noexcept тут с натяжкой можно сделать только empty и size. С натяжкой, потому что в этом нет смысла, минусов больше. А когда ты сделаешь их правильно и потокобезопасно, то и их нельзя будет делать
Хочешь расскажу страшную историю?) Исключения до сих пор нормально есть не на всех платформах и noexcept позволяет жто быстро ловить
источник

ПК

Побитый Кирпич... in supapro.cxx
Dmitry Vedenko
Хочешь расскажу страшную историю?) Исключения до сих пор нормально есть не на всех платформах и noexcept позволяет жто быстро ловить
Как он это позволяет быстро ловить?
источник

DV

Dmitry Vedenko in supapro.cxx
при броске сразу терминейт
источник

ПК

Побитый Кирпич... in supapro.cxx
Алексей Тимошенко
Ну да, я этого и хочу)
Короче если ты юзаешь noexcept ради краша, то что то тут не так.
источник

АТ

Алексей Тимошенко... in supapro.cxx
Я понял про noexcept,спасибо) Но я, честно, не понимаю где гонка данных в empty, push и size :(
источник

ПК

Побитый Кирпич... in supapro.cxx
Dmitry Vedenko
при броске сразу терминейт
Если нет поддержки исключений, то тоже будет terminate при выбросе
источник

ПК

Побитый Кирпич... in supapro.cxx
Причём тут noexcept?
источник

DV

Dmitry Vedenko in supapro.cxx
да однообразия поведения
источник

DV

Dmitry Vedenko in supapro.cxx
уже не говоря, что 99.(9)% исключений  - либо плохой дизайн, либо нет смысла хендлить
источник

ПК

Побитый Кирпич... in supapro.cxx
Алексей Тимошенко
Я понял про noexcept,спасибо) Но я, честно, не понимаю где гонка данных в empty, push и size :(
Представь что я вызову push и size из разных потоков. Поток 1 сделает size_++; поток 2 сделает return size_; Одновременное чтение и запись из разных потоков это data race, в С++ это UB
источник

ПК

Побитый Кирпич... in supapro.cxx
Dmitry Vedenko
уже не говоря, что 99.(9)% исключений  - либо плохой дизайн, либо нет смысла хендлить
Видимо я юзаю оставшиеся 0.0000..1%
источник

АТ

Алексей Тимошенко... in supapro.cxx
а то что size_ это atomic  не решает проблему? Или я не так понимаю, std::atomic?
источник

ПК

Побитый Кирпич... in supapro.cxx
Побитый Кирпич
Видимо я юзаю оставшиеся 0.0000..1%
Или просто кто то не умеет их использовать
источник