




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FFmpeg打造Android万能音频播放器杨万里Android工程师
CSDN博客:邮箱:AndroidC++多线程2、创建子线程3、生产者和消费者模型4、C++全局调用Java方法1、AndroidC++线程简介AndroidC++线程简介
我们都知道Android是基于Linux内核的,而Linux是遵循POSIX线程标准的,POSIX线程库中有一系列PthreadsAPI方便我们对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*类型的既可以传任意类型。3、pthread_exit:用于退出线程如:pthread_exit(&thread),参数也可以传NULL。注:线程回调函数最后必须调用此方法,不然APP会退出(挂掉)。
生产者和消费者模型1、pthread_mutex_t
:用于创建线程锁对象如:pthread_mutex_t
mutex;
2、pthread_mutex_init
:用于初始化pthread_mutex_t锁对象如:pthread_mutex_init(&mutex,
NULL);
3、pthread_mutex_destroy
:用于销毁pthread_mutex_t锁对象如:pthread_mutex_destroy(&mutex);
4、pthread_cond_t
:用于创建线程条件对象如:pthread_cond_t
cond;
5、pthread_cond_init
:用于初始化pthread_cond_t条件对象如:pthread_cond_init(&cond,
NULL);
6、pthread_cond_destroy
:用于销毁pthread_cond_t条件对象如:pthread_cond_destroy(&cond);
7、pthread_mutex_lock
:用于上锁mutex,本线程上锁后的其他变量是不能被别的线程操作的如:pthread_mutex_lock(&mutex);
8、pthread_mutex_unlock
:用于解锁mutex,解锁后的其他变量可以被其他线程操作如:pthread_mutex_unlock(&mutex);
9、pthread_cond_signal
:用于发出条件信号如:pthread_cond_signal(&mutex,
&cond);
10、pthread_cond_wait
:用于线程阻塞等待,直到pthread_cond_signal发出条件信号后才执行退出线程阻塞执行后面的操作。
C++全局调用Java方法1、C++主线程调用Java方法2、C++子线程调用Java方法C++主线程调用Java方法1、根据jobject获取jclass(静态方法就不用这一步了)如:jclass
clz
=
env->GetObjectClass(jobj);2、获取jmethodid如:jmethodidjmid
=
env->GetMethodID(clz,
"onError",
"(ILjava/lang/String;)V")3、调用方法如:jenv->CallVoidMethod(jobj,
jmid,
code,
jmsg)
C++子线程调用Java方法由于JniEnv是线程相关的,所以子线程中不能使用创建线程的JniEnv;而JVM是进程相关的,所以可以通过JVM来获取当前线程的JniEnv,然后就可以调用Java的方法了。1、获取JVM对象:JNI_OnLoad(JavaVM*
vm,void*
reserved)2、通过JVM获取JniEnv:JNIEnv
*env;
jvm->AttachCurrentThread(&env,
0);/* callJavaMethoid*/
jvm->DetachCurrentThread();THANKSCSDN网站:企业服务:人才服务:CTO俱乐部:高校俱乐部:程序员杂志:CODE平台:项目外包:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 档案智能化管理发展态势试题及答案
- 描述性统计计算能力试题及答案
- 2025中学班车租赁合同范本
- 2025企业融资租赁合同租赁合同范本
- 2025健身房用工的合同范本
- 2025年中考英语冲刺模拟试卷-浙江地区-学生版
- 2025新版施工总承包合同
- 2025【合同范本】建筑工程设备租赁合同范本
- 2025资产转让委托合同范本
- 学习小伙伴六年级语文游戏题试题及答案
- 人教版数学四年级下册3运算定律《解决问题策略的多样性》说课稿
- 注射相关感染预防与控制(全文)
- GB 31825-2024制浆造纸单位产品能源消耗限额
- Q-SY 05601-2019 油气管道投产前检查规范
- 《金属非金属地下矿山通信联络系统建设规范》
- 浅析船体分段焊接检验
- 医保基金监管培训课件
- 2024高考复习必背英语词汇3500单词
- 3课 《赤壁赋》公开课一等奖创新教学设计【中职专用】高一语文高教版2023-2024-基础模块下册
- 第5章 层次分析法课件
- 情感纠纷案件调解协议书
评论
0/150
提交评论