Мой объект создает поток, и этот поток изменяет объект-создателя в течение его жизненного цикла. Проблема в том, что этот поток не должен вызывать методы объектов при его уничтожении. Я нашел какое-то решение для этой проблемы, и я хотел бы знать, лучше ли это.Тестирование, если объект не удален
class A
{
shared_ptr<int> guard = make_shared<int>(0);
public:
weak_ptr<int> getGuard() { return guard; }
void method() {}
A()
{
thread([this]
{
const auto &guard = getGuard();
while(!guard.expired())
method();
});
}
};
Вы намерены отсоединить поток, который создается, чтобы поток не блокировал конструктор 'A'? –
Да, в реальном коде, конструкция нити не блокирует основной поток. Честно говоря, новый поток даже не создан в costructor. Я просто попытался немного упростить пример. –