Как организовать выполнение задачи после выхода из текущего потока? - PullRequest
0 голосов
/ 07 мая 2020

std::promise имеет интересную функцию-член set_value_at_thread_exit:

Состояние готово, когда текущий поток завершается, после всех переменных с длительностью локального хранилища потока были уничтожены. (выделено мной)

Я знал: используя thread_local X var;, мы можем организовать задачу, выполняемую в X::~X() когда текущий поток завершается.

Однако я не знаю: как организовать выполнение задачи после того, как все переменные с длительностью локального хранилища потока были уничтожены ?

Тривиальное, уродливое, но возможное решение: запускает новый поток и joining текущий поток, после возврата joining новый поток может безопасно выполнить задачу.

Как реализовать функцию в Win32 API и POSIX API соответственно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...