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

时间:2015-04-28 22:57:14

标签: android multithreading c++11 android-ndk java-native-interface

我想创建一个在进行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或类似的东西。

1 个答案:

答案 0 :(得分:2)

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

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

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