std :: thread :: detach引发system_error没有这样的进程

时间:2017-01-03 16:53:44

标签: c++ ios multithreading

我们的iOS崩溃报告工具列出了std :: thread :: detach:

引发的许多异常
Fatal Exception: std::__1::system_error
thread::detach failed: No such process

由于我们的实现没有检查std :: thread实例是否可以连接,我们认为问题可能是线程已经终止,所以我们尝试使用代码重现问题,例如

for (int i=0; i < 1000; i++)
{
    std::thread noneThread([]() {
        int a = 3;
    });
    assert(noneThread.joinable());
    noneThread.detach();
}

此代码在iOS,MacOS X和Ubuntu上正常工作,因为documentation解释了它:

  

已完成代码但尚未加入的线程   仍然被认为是一个活跃的执行线程,因此   可连接。

在调用detach之前检查joinable可以避免异常,但是不能回答以下问题

  • 这个例外可能是什么原因?

0 个答案:

没有答案