![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
alexy |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 44 Регистрация: 4.8.2010 Пользователь №: 1931 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Встолкнулся с такой проблемой. мне нужно передать указатель на объект в несколько лямбда функций, которые будут вызваны позднее из разных потоков. сразу встал вопрос кто уничтожит объект. ну я подумал сначала что засуну его в std::shared_ptr и делов-то. выходит типа такого
теперь я думаю - он вобще когда-нибудь уничтожиться? или будет храниться веки вечные.. |
|
|
![]() |
alexy |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 44 Регистрация: 4.8.2010 Пользователь №: 1931 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
о, работает как надо
![]() объект в shared_ptr уничтожается когда завершаются потоки его использующие. да, класс который я использую разумеется сам потокобезопасный.. там мутексы boost::signals2 и. т.д. зы: почему-то не работал без -Wl,--no-as-needed при линковке с потоками из std.. не подключал pthread? Сообщение отредактировал alexy - 24.10.2013, 12:14 |
|
|
Iron Bug |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
объект в shared_ptr уничтожается когда завершаются потоки его использующие. да, тут я детали забыла. впрочем, я всегда явно выделяю память и освобождаю. привычка к аккуратному использованию кучи. видимо, со старых времён осталась такая привычка. проверяю обязательно, что память не утекает, даже у больших приложений на многодневных прогонах. зы: почему-то не работал без -Wl,--no-as-needed при линковке с потоками из std.. не подключал pthread? под чем собираешь? с какими опциями? иногда у конкретных версий-систем бывают разные особенности. ну и сторонние библиотеки можно по-разному собирать. Сообщение отредактировал Iron Bug - 24.10.2013, 18:49 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 20.7.2025, 6:06 |