Android NDK C++中的多线程

Android NDK C++中的多线程

前言

我们都知道Android是基于Linux内核的,而Linux是遵循POSIX线程标准的,POSIX线程库中有
一系列Pthreads API方便我们对Linux线程的操作。所以我们在Android中使用C/C++线程也就转到
了使用POSIX线程库。他们都在头文件“pthread.h”中。

函数相关

1、pthread_t
用于声明一个线程对象如:pthread_t thread;

2、pthread_creat :
用于创建一个实际的线程如:pthread_create(&pthread,NULL,threadCallBack,NULL);其总共接收4个参数,第一
个参数为pthread_t对象,第二个参数为线程的一些属性我们一般传NULL就行,第三个参数为线程执行的函数( void* threadCallBack(void data) ),第四个参数是传递给线程的参数是void类型的既可以传任意类型,这里要注意c++语言对于数据类型要比c语言严禁很多。如果传递的不是void*,则需要强制的类型转换。

3、pthread_exit :
用于退出线程如:pthread_exit(&thread),参数也可以传NULL。注:线程回调函数最后必须调用此方法,不然APP
会退出(挂掉)。

演示代码

Android NDK C++中的多线程_第1张图片

效果如下
Android NDK C++中的多线程_第2张图片


#include 
#include 
#include 
#include "androidLog.h"
using namespace std;

pthread_t pthread;

void* normalCallBack(void* data){
    int i = (int) data;
    LOGI("create thread form c++ i = %d",i);
    pthread_exit(NULL);
}

extern "C"
JNIEXPORT void JNICALL
Java_com_example_administrator_ndkthread_ThreadDemo_thread(JNIEnv *env, jclass type) {
    pthread_create(&pthread, NULL, normalCallBack, (void *) 1);
}

项目地址:https://gitee.com/yys0215/NDKPThread

你可能感兴趣的:(NDK开发专题)