分离线程和 Main() Exit 的后果
考虑一个场景,其中分离线程启动并在其控制 std 后继续执行::thread 对象超出范围。该标准对这个主题的潜在沉默引起了人们的关注:当 main() 函数退出时,分离线程会变成什么?
未定义的行为或定义的效果?
标准缺乏关于此事的明确指导方针。然而,对原始问题的回答提供了澄清:
加入分离线程和信号处理程序
解决第二个问题,响应断言可以通过 *_at_thread_exit 系列函数加入分离线程。这些函数可以发出线程执行完成的信号,同时确保所有析构函数都已被调用。
但是,单独使用条件变量或信号量不足以实现可靠的连接。该标准对信号处理期间的代码执行实施限制,除非实现明确允许,否则不包括条件变量的使用。
程序行为的后果
鉴于这些根据观察,标准对 main() 退出时线程行为的约束规定了开发人员的具体操作:
以上是当'main()”函数退出时,分离的线程会发生什么?的详细内容。更多信息请关注PHP中文网其他相关文章!