у меня есть объект boost::shared_ptr
Создается объект, которому передается weak_ptr
Оба объекта запускают потоки. Один напрямую обращается к shared_ptr, а второй через weak_ptr.lock
Потоки не синхронизированы.
В один прекрасный момент происходит access volation
Отладчик показывает, что проблема с deleter у shared_ptr, но объект гарантированно не удаляется в этот момент.
Может ли быть проблема со счетчиком ссылок, которого в какой-то момент переклинивает и он пытается грохнуть объект,
а второй поток на этом спотыкается ?
З.Ы. Если да, то можно небольшой пример для демонстрации, а то я так и не могу отловить этот момент.
Здравствуйте, gpepsi, Вы писали:
G>у меня есть объект boost::shared_ptr G>Создается объект, которому передается weak_ptr
G>Оба объекта запускают потоки. Один напрямую обращается к shared_ptr, а второй через weak_ptr.lock G>Потоки не синхронизированы.
G>В один прекрасный момент происходит access volation G>Отладчик показывает, что проблема с deleter у shared_ptr, но объект гарантированно не удаляется в этот момент.
G>Может ли быть проблема со счетчиком ссылок, которого в какой-то момент переклинивает и он пытается грохнуть объект, G>а второй поток на этом спотыкается ?
G>З.Ы. Если да, то можно небольшой пример для демонстрации, а то я так и не могу отловить этот момент.
Так может попытаться синхронизировать доступ потоков к shared_ptr?
Здравствуйте, gpepsi, Вы писали:
G>Может ли быть проблема со счетчиком ссылок, которого в какой-то момент переклинивает и он пытается грохнуть объект, G>а второй поток на этом спотыкается ?
проблем быть не должно, если в разных потоках идет работа с разными smart pointer-ами (которые могут указывать на один объект)
приведите пример кода
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, gpepsi, Вы писали:
G>>Может ли быть проблема со счетчиком ссылок, которого в какой-то момент переклинивает и он пытается грохнуть объект, G>>а второй поток на этом спотыкается ?
U>проблем быть не должно, если в разных потоках идет работа с разными smart pointer-ами (которые могут указывать на один объект) U>приведите пример кода
Вот и я про тоже. Попробую побрякать на деструкторах...
Здравствуйте, Диоксин, Вы писали:
Д>Здравствуйте, gpepsi, Вы писали:
G>>у меня есть объект boost::shared_ptr G>>Создается объект, которому передается weak_ptr
G>>Оба объекта запускают потоки. Один напрямую обращается к shared_ptr, а второй через weak_ptr.lock G>>Потоки не синхронизированы.
G>>В один прекрасный момент происходит access volation G>>Отладчик показывает, что проблема с deleter у shared_ptr, но объект гарантированно не удаляется в этот момент.
G>>Может ли быть проблема со счетчиком ссылок, которого в какой-то момент переклинивает и он пытается грохнуть объект, G>>а второй поток на этом спотыкается ?
G>>З.Ы. Если да, то можно небольшой пример для демонстрации, а то я так и не могу отловить этот момент.
Д>Так может попытаться синхронизировать доступ потоков к shared_ptr?
Так я сначала хочу понять — нужно ли это вообще. Тоесть есть ли какой фокус с подсчетом ссылок ?