Когда я должен использование std::promise::set_value_at_thread_exit
/std::promise::set_exception_at_thread_exit
над std::promise::set_value
/std::promise::set_exception
?
Единственное отличие состоит в том, что первые гарантируют, что связанное будущее будет готово только один раз. thread_local
s вызывающего потока были уничтожены. Однако я не могу придумать ни одного несинтетического примера, где это было бы полезно.
Одна вещь может состоять в том, чтобы знать, закончил ли отсоединенный поток, когда ваша программа все еще находится в состоянии, в котором она хочет знать.
Других решений пока нет …