Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Многопоточность и удаление объектов


Автор: VingradFan 27.9.2012, 21:35
Здравствуйте, подскажите, пожалуйста, как решить проблему.

Представьте себе класс. Метод этого класса создает новый поток. Этот поток получает в качестве параметра указатель this и оперирует с экземпляром этого класса. После чего, экземпляр класса удаляется и нужно корректно завершить тот новый поток.

Проблема в том, что после удаления экземпляра класса, в том новом потоке обращение к удаленному объекту приводит к ошибке.

Просьба не предлагать boost и c++11, т. к. нет возможности их использовать.

Автор: bsa 27.9.2012, 21:44
VingradFan, в деструкторе класса добавляем установку флага terminate. А затем вызов join для потока (ожидание завершения потока). В потоке ты должен периодически проверять флаг, когда он будет выставлен, то необходимо завершить работу потока.

Автор: VingradFan 27.9.2012, 22:03
bsa, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)