tag:blogger.com,1999:blog-10303035.post9060357333398201197..comments2024-02-04T23:20:04.066+03:00Comments on Алёна C++: Несколько интересных свойств умных указателей в C++Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.comBlogger25125tag:blogger.com,1999:blog-10303035.post-89684078261563836202018-08-16T08:41:51.623+03:002018-08-16T08:41:51.623+03:00Когда вернётесь в геймдев?
Пока не собираюсь<i>Когда вернётесь в геймдев?</i><br /><br />Пока не собираюсьAlenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-66399229092346010372018-08-15T18:33:56.847+03:002018-08-15T18:33:56.847+03:00Когда вернётесь в геймдев?Когда вернётесь в геймдев?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-84832741363656751982018-03-06T19:25:12.361+03:002018-03-06T19:25:12.361+03:00Как насчет intrusive_ptr из boost. Стратегия встро...Как насчет intrusive_ptr из boost. Стратегия встроенного счетчика ссылок в текущем стандарте библиотеки не реализуется, и поэтому нужен weak_ptr поверх shared_ptr. std::make_shared конечно позволяет разместить указатели на счетчик ссылок и на объект в одном блоке памяти, и решить проблему (увеличив потребление памяти, на разного рода this). Однако пользователь API как правило понятия не имеет использовался-ли этот подход или нет (особенно если детали реализации неизвестны, есть только header файл) и вынужден использовать weak_ptr или вообще извлечь "сырой" указатель из интеллектуального. BWT, его легко извлечь из boost например вот так https://github.com/incoder1/IO/blob/master/include/config/libs/intrusive_ptr.hpp и не тащить с собой весь Boost.Victorhttps://www.blogger.com/profile/13680428415154708392noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-53784724800939946182017-09-13T13:46:33.479+03:002017-09-13T13:46:33.479+03:00./a.out
gp2.use_count() = 2
bp2.use_count() = 1
B..../a.out <br />gp2.use_count() = 2<br />bp2.use_count() = 1<br />Bad::~Bad() called<br />Bad::~Bad() called<br /><br />Не понятно почему деструктор Bad был вызван после вывода bp2.use_count() оба раза, а не один раз до и один после.Алексейnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-88714473804417219862016-11-23T16:57:01.171+03:002016-11-23T16:57:01.171+03:00> shared_ptr "тяжелее" чем scoped_ptr...> shared_ptr "тяжелее" чем scoped_ptr, потому что он гарантирует корректную работу в многопоточных программах<br /><br />но есть ньюанс:<br />https://habrahabr.ru/post/311560/<br /><br />надо батарейки к нему не забыть:<br />http://en.cppreference.com/w/cpp/memory/shared_ptr/atomicAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-22021829042167855712016-09-02T03:42:44.605+03:002016-09-02T03:42:44.605+03:00Эх хороший язык с++, жаль что давно забросилаЭх хороший язык с++, жаль что давно забросилаМарияhttps://andreyex.runoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-47875725341842175172016-06-15T00:04:55.028+03:002016-06-15T00:04:55.028+03:00AlixBZ
Простите за возможную бестактность с моей с...<b>AlixBZ</b><br /><i>Простите за возможную бестактность с моей стороны, но с чем связана смена предметной области - с личными предпочтениями или с положением дел в игрострое?</i><br /><br />Предложение работы от Майкрософта было сильно лучше всех остальных на тот момент. Причем распределенные системы не были новой для меня отраслью, я на распределенных системах специализировалась в Универе. Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-30821986563854237562016-06-14T23:30:38.314+03:002016-06-14T23:30:38.314+03:00Я уже давно не в геймдеве.
Простите за возможную ...<i>Я уже давно не в геймдеве.</i><br /><br />Простите за возможную бестактность с моей стороны, но с чем связана смена предметной области - с личными предпочтениями или с положением дел в игрострое?AlixBZhttps://www.blogger.com/profile/02085677817624890949noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-86739153482550770862016-06-14T21:02:32.787+03:002016-06-14T21:02:32.787+03:00Анонимный
Алена, а вы уже не в геймдеве?
Я уже д...<b>Анонимный</b> <br /><i>Алена, а вы уже не в геймдеве?</i><br /><br />Я уже давно не в геймдеве.<br />Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-19345511870342912682016-06-14T19:17:04.818+03:002016-06-14T19:17:04.818+03:00Алена, а вы уже не в геймдеве?Алена, а вы уже не в геймдеве?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-36168814597512910342016-05-03T02:19:54.077+03:002016-05-03T02:19:54.077+03:00Volos_86
Жалко в РАДИО-Т больше не приходите...
З...<b>Volos_86</b><br /><i>Жалко в РАДИО-Т больше не приходите...</i><br /><br />Зато я недавно была в <a href="http://cppcast.com/2016/04/elena-sagalaeva/" rel="nofollow">cppcast</a>.Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-9578475833337900202016-04-22T17:08:10.054+03:002016-04-22T17:08:10.054+03:00Жалко в РАДИО-Т больше не приходите...Жалко в РАДИО-Т больше не приходите...Volos_86https://www.blogger.com/profile/12178470634189643973noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-90971431535804076022016-03-14T21:11:11.316+03:002016-03-14T21:11:11.316+03:00Анонимный
Алена, что вы думаете по поводу язы...<b>Анонимный</b><br /><br /><i> Алена, что вы думаете по поводу языка Rust, есть смысл его изучать? Знаний по с++ нету.</i><br /><br />Интересный новый язык, набирает популярность. Но вакансий на сегодняшний день очень-очень мало.<br />Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-13998271430756619252016-03-13T21:28:30.177+03:002016-03-13T21:28:30.177+03:00Алена, что вы думаете по поводу языка Rust, есть с...Алена, что вы думаете по поводу языка Rust, есть смысл его изучать? Знаний по с++ нету.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-88077003299268187052016-02-27T01:09:05.207+03:002016-02-27T01:09:05.207+03:002Sergey Vostrikov
А как на счет enable_shared_fro...<b>2Sergey Vostrikov</b><br /><br /><i>А как на счет enable_shared_from_this<>, если Good не находится в shared_ptr<>?<br /><br /> Good g1;<br /> std::shared_ptr<Good> gp2 = g1.getptr(); // всё ли тут хорошо?<br /></i><br /><br />Не хорошо. Наличие хотя бы одно shared_ptr - обязательное условие<br /><br />std::enable_shared_from_this allows an object t that is currently managed by a std::shared_ptr named pt to safely generate additional std::shared_ptr instancesAlenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-4775709020435916882016-02-27T00:51:50.858+03:002016-02-27T00:51:50.858+03:002Den Raskovalov
Зачем передавать const shared_ptr...<b>2Den Raskovalov</b><br /><br /><i>Зачем передавать const shared_ptr<T>, если можно передать T*?</i><br /><br />Чтобы у указателя стало на одного владельца больше.(вижу, что Alexander уже на это ответил).<br /><br />Также можно передать const shared_ptr<T>&, если ты не уверен нужен тебе еще один владелец или нет, по ходу функции можно передумать и присвоить его.<br /><br /><b>2Alexander Batishchev</b><br /><br /><i>Привет, Атомарные операции дороже неатомарных?</i><br /><br />Да, потому что тебе надо синхронизовать кэши ядер, нельзя менять порядок операций и пр. Джоссатис об этом подробно говорит.Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-23904401051505731102016-02-26T14:29:45.188+03:002016-02-26T14:29:45.188+03:00А как на счет enable_shared_from_this<>, есл...А как на счет enable_shared_from_this<>, если Good не находится в shared_ptr<>?<br /><br />Good g1;<br />std::shared_ptr<Good> gp2 = g1.getptr(); // всё ли тут хорошо?Anonymoushttps://www.blogger.com/profile/01902854747059545982noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-74263516071111359032016-02-26T14:28:38.494+03:002016-02-26T14:28:38.494+03:00Этот комментарий был удален автором.Anonymoushttps://www.blogger.com/profile/01902854747059545982noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-32443765652940293032016-02-26T11:49:27.638+03:002016-02-26T11:49:27.638+03:00Зачем передавать const shared_ptr, если можно пере...<i>Зачем передавать const shared_ptr, если можно передать T*?</i><br /><br />Почему бы и не T& (с проверкой на nullptr где необходимо). Избегает сырых указателей и потенциальных проблем с их сохранением или освобождением.<br />Для функций обработки данных, которые не влияют на владение объектами, не должно быть принципиально откуда берется объект: указатель, локальная переменная, контейнер, умный указатель, и т.п. Ссылки выглядят наиболее подходящим вариантом, за исключением, опять же, потенциальных nullptr. Передачу shared_ptr в аргументе стоит интерпретировать как явное разделение владения объектом. Аналогично для unique_ptr, его передача должна означать передачу владения.Alexanderhttps://www.blogger.com/profile/17961279432759971931noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-25491817418457751652016-02-26T11:23:50.609+03:002016-02-26T11:23:50.609+03:00Привет, Атомарные операции дороже неатомарных?Привет, Атомарные операции дороже неатомарных?abatishchevhttps://www.blogger.com/profile/16426680735883613944noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-66238224837332784592016-02-26T10:23:27.740+03:002016-02-26T10:23:27.740+03:00Почему нельзя? Можно.
Вопрос баланса по стоимости....Почему нельзя? Можно.<br />Вопрос баланса по стоимости.Сергейhttps://www.blogger.com/profile/10973621537470546724noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-87879945329244362212016-02-26T07:28:03.310+03:002016-02-26T07:28:03.310+03:00Зачем передавать const shared_ptr<T>, если м...Зачем передавать const shared_ptr<T>, если можно передать T*?Anonymoushttps://www.blogger.com/profile/07249947919477855602noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-29340102293491047212016-02-26T07:27:15.917+03:002016-02-26T07:27:15.917+03:00Этот комментарий был удален автором.Anonymoushttps://www.blogger.com/profile/07249947919477855602noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-68352354856432085182016-02-26T06:12:22.944+03:002016-02-26T06:12:22.944+03:00Vadim Panin
Если я не ошибаюсь, при копировании s...<b>Vadim Panin</b> <br /><i>Если я не ошибаюсь, при копировании shared_ptr увеличение счетчика делается атомарным инкрементом</i><br /><br />Ага, мне уже об этом писали, я поправила.<br />Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-59886732951576704912016-02-26T05:33:36.134+03:002016-02-26T05:33:36.134+03:00Если я не ошибаюсь, при копировании shared_ptr уве...Если я не ошибаюсь, при копировании shared_ptr увеличение счетчика делается атомарным инкрементом (interlocked increment в VC и я не помню уже какой интринсик в gcc). Возможно на каких-то платформах это в самом деле через мьютекс сделано, но я пока таких не видел.Vadim Paninhttps://www.blogger.com/profile/12455155807854751351noreply@blogger.com