为什么创建 C++11 线程会导致致命信号?

Why does creating a C++11 thread cause a Fatal Signal?

我想创建一个在进行 JNI 调用后无限期运行的 C++11 线程。为什么这会产生致命信号?

#include <thread>

static void teste()
{
    while(true)
        LOGI("IN TEST");
}

JNIEXPORT void Java_blahblah(JNIEnv *javaEnvironment, jobject self)
{
    std::thread t(teste);
    //t.join(); //I don't want to join it here.
}

我不需要 C++11 线程来调用 JNI 或类似的东西。

根据 this answer,如果线程在销毁时仍可连接,thread 的析构函数将调用 std::terminate

如果您不想加入线程,可以通过分离线程来解决此问题。

std::thread t(teste).detach();