ПрограммированиеФорумОбщее

std::async - не вызывается деструктор

#0
17:14, 20 фев 2017

При использовании std::packaged_task деструктор статичного объекта вызывается после завершения работы потока, т. е. по запросу готовности соответствующего fututre.
В случае с std::async деструктор не вызывается. По-видимому, поток в таком случае системой освобождается после вызова деструкторов всех глобальных объектов. Прав ли я и как с этим бороться?

+ Показать
#1
19:05, 20 фев 2017

Алмаз
> деструктор статичного объекта вызывается после завершения работы потока
Деструктор статичного объекта вызывается, когда взбредёт в голову рантайму. Тут лучше ни на что не рассчитывать и использовать какой-нибудь синглтон с контролируемым временем жизни.

#2
20:01, 20 фев 2017

Деструкторы статических объектов вызываются строго в порядке обратном вызову их конструкторов.
Конструкторы вызываются сверху вниз, как описаны в компилируемом файле. Порядок вызова конструкторов из разных единиц компиляции не определен, может быть любым.

ПрограммированиеФорумОбщее

Тема в архиве.