为什么创建 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();
我想创建一个在进行 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();