Size: a a a

2020 March 24

DF

Dollar Føølish in pro.cxx
Так он хочет мембер. Хз на ум только кланговские лямбды приходят
источник

АР

Андрей Руссков in pro.cxx
ну он хочет передать в сишную либу что-то что дернет this->foo();
источник

OL

Oleg Linkin in pro.cxx
хм
источник

OL

Oleg Linkin in pro.cxx
Вообще в этом классе можно использовать контекст
источник

OL

Oleg Linkin in pro.cxx
ты прав. Просто я до этого наелся другого колбэка, который мог вызваться из любого класса
источник

АР

Андрей Руссков in pro.cxx
я просто тоже разок по незнанию налабал синглтон
источник

АР

Андрей Руссков in pro.cxx
а потом оказалось что всё просто
источник

IA

Ivan Azoyan in pro.cxx
Парни, я чет не могу найти в документации, что lock() weak_ptr это тред сейф. Это не так?
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
вообще как-то странно. как будто в классе много одинаковых мемберов и при этом они от остального не зависят. а если зависят то можно передавать this и завести поле с состоянием из которого и будет ясно что надо теребить
источник

OL

Oleg Linkin in pro.cxx
Ну, не всегда. Мне для взаимодействия с нашей либой сообщений пришлось сделать сигнлтоновый обсервере, который передавался через контекст и потом рассылал всем колбэки. Потому что сами колбэки могут быть вызваны в любом классе - не там, где создавался запрос
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
вот нифига не понял
источник

ПК

Побитый Кирпич in pro.cxx
Ivan Azoyan
Парни, я чет не могу найти в документации, что lock() weak_ptr это тред сейф. Это не так?
lock одного и того же weak ptr-а из разных потоков вряд ли thread safe, а вот lock weak ptr-а конкурентно с созданием других shared ptr-ов и локом других weak ptr-ов thread safe, иначе нафиг оно такое нужно?
источник

IA

Ivan Azoyan in pro.cxx
Побитый Кирпич
lock одного и того же weak ptr-а из разных потоков вряд ли thread safe, а вот lock weak ptr-а конкурентно с созданием других shared ptr-ов и локом других weak ptr-ов thread safe, иначе нафиг оно такое нужно?
Я где-то читал, что это вообще атомарная операция. Но в официальных документах ничего не написано
источник

ПК

Побитый Кирпич in pro.cxx
Хотя на cppreference написано "executed atomically.". Мб это значит что и на одном ptr-е безопасно
источник

ПК

Побитый Кирпич in pro.cxx
Ivan Azoyan
Я где-то читал, что это вообще атомарная операция. Но в официальных документах ничего не написано
Вон я выше нашёл
источник

IA

Ivan Azoyan in pro.cxx
Побитый Кирпич
Хотя на cppreference написано "executed atomically.". Мб это значит что и на одном ptr-е безопасно
Вау. А теперь такой же вопрос про разменовывание его
источник

ПК

Побитый Кирпич in pro.cxx
Ivan Azoyan
Вау. А теперь такой же вопрос про разменовывание его
Разыменование нигде не thread safe
источник

IA

Ivan Azoyan in pro.cxx
Да, это логично
источник

AT

Alexander T in pro.cxx
Alex
Похоже на правду, спасибо за объяснение!
Кстати, вот забавный пример UB с алиасингом: вообще, по одному указателю мы не имеем права делать type punning (например, одновременно считать его float* и int*), но если таки сделать это, то в одном случае компилятор может/разрешает сделать reinterpret, а в другом (если разорвать связь через volatile) — нет, и считает предыдущее кэшированное значение неизменившимся.
https://godbolt.org/z/-t6Nbf
источник

A

Alex in pro.cxx
и это хорошо, что лишних инструкций не генерится
источник