【发布时间】:2019-06-15 07:31:37
【问题描述】:
以下文本摘自The C++ Standard Library: A Tutorial and Reference, 2nd Edition一书的第 18.2.1† 节:: p>
但是请注意,生命周期问题也适用于全局和静态对象,因为当程序退出时,分离的线程可能仍然运行,这意味着它可能会访问已经销毁或正在销毁的全局或静态对象。不幸的是,这会导致未定义的行为。
据我了解,当main() 结束时,所有分离的线程都会终止。
因此,我怀疑这种行为的原因是全局和静态对象的实际销毁顺序对于分离线程的终止是未指定的,即它可能发生在之前,在分离的线程终止期间或之后。
我们将不胜感激。
†更具体地说:在标题下的小节中注意分离的线程。
【问题讨论】:
-
你是对的。线程在 main 之后结束,但这就是我们所知道的。
-
这一段标准让我怀疑:eel.is/c++draft/basic.start.term#2
标签: c++ multithreading c++11 stdthread