В настоящее время я столкнулся с проблемой, что объект (экземпляр), к которому часто обращаются два разных потока, должен быть освобожден. Для меня не имеет значения, какой из двух потоков разрушает экземпляр, но я бы предпочел тот, который также создает его, хотя я думаю, что это вообще не имеет значения.Как безопасно уничтожить объект, к которому часто обращаются два разных потока?
Итак, в сценарии, где поток, который должен уничтожить объект, обнаруживает, что он должен быть удален, а при вызове деструктора другой поток обращается к члену (функции) этого объекта, возможно, что-то вроде будет происходить ошибка времени выполнения.
Я провел некоторое исследование по этой теме, но я мог просто выяснить, люди говорят: «Зачем нужно удалить объект, который все еще необходим для существования». Но в моем случае он должен перестать быть нужным после того, как кусок кода, который выполняет один поток, решает его уничтожить.
Я был бы признателен за ответ, как подсказку к хорошей книге или статье, посвященной этой теме, но не стесняйтесь писать, как вы решите эту проблему.
Удаление ничем не отличается от любой другой проблемы синхронизации. Используйте мьютекс или что-то в этом роде. – syam
Не использовать [умные указатели] (http://stackoverflow.com/questions/106508/what-is-a-smart-pointer-and-when-should-i-use-one)? –
Подождите, пока оба потока не закончатся? – doctorlove