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

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

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

#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();

关于android - 为什么创建 C++11 线程会导致致命信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931385/

相关文章:

Android http keepalive解决方案,但它是永久的吗?

java - 固定线程池的理想大小是多少?

c++ - 使用 lambda 的线程构建 block (TBB) 排队任务

android - achartengine toScreenPoint(double) 总是返回 nullPointerException

android - 如果未安装应用程序,如何获取 Facebook 应用程序链接

java - 与所有者框架异步打开 JDialog 的问题

c++ - 我可以只对那些 std::is_trivially_move_* 东西使用 memcpy 吗?

c++ - 如果在并行部分执行会抛出错误吗?

android - ListActivity 和 Activity 的奇怪行为

django - 创建一个新线程发送给管理员