版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
FFmpeg打造Android萬能音頻播放器楊萬里Android工程師
CSDN博客:郵箱:AndroidC++多線程2、創(chuàng)建子線程3、生產(chǎn)者和消費者模型4、C++全局調(diào)用Java方法1、AndroidC++線程簡介AndroidC++線程簡介
我們都知道Android是基于Linux內(nèi)核的,而Linux是遵循POSIX線程標準的,POSIX線程庫中有一系列PthreadsAPI方便我們對Linux線程的操作。所以我們在Android中使用C/C++線程也就轉(zhuǎn)到了使用POSIX線程庫。他們都在頭文件“pthread.h”中。創(chuàng)建子線程1、pthread_t:用于聲明一個線程對象如:pthread_t
thread;
2、pthread_creat
:用于創(chuàng)建一個實際的線程如:pthread_create(&pthread,NULL,threadCallBack,NULL);其總共接收4個參數(shù),第一個參數(shù)為pthread_t對象,第二個參數(shù)為線程的一些屬性我們一般傳NULL就行,第三個參數(shù)為線程執(zhí)行的函數(shù)(
void*
threadCallBack(void
*data)
),第四個參數(shù)是傳遞給線程的參數(shù)是void*類型的既可以傳任意類型。3、pthread_exit:用于退出線程如:pthread_exit(&thread),參數(shù)也可以傳NULL。注:線程回調(diào)函數(shù)最后必須調(diào)用此方法,不然APP會退出(掛掉)。
生產(chǎn)者和消費者模型1、pthread_mutex_t
:用于創(chuàng)建線程鎖對象如: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
:用于創(chuàng)建線程條件對象如: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
:用于發(fā)出條件信號如:pthread_cond_signal(&mutex,
&cond);
10、pthread_cond_wait
:用于線程阻塞等待,直到pthread_cond_signal發(fā)出條件信號后才執(zhí)行退出線程阻塞執(zhí)行后面的操作。
C++全局調(diào)用Java方法1、C++主線程調(diào)用Java方法2、C++子線程調(diào)用Java方法C++主線程調(diào)用Java方法1、根據(jù)jobject獲取jclass(靜態(tài)方法就不用這一步了)如:jclass
clz
=
env->GetObjectClass(jobj);2、獲取jmethodid如:jmethodidjmid
=
env->GetMethodID(clz,
"onError",
"(ILjava/lang/String;)V")3、調(diào)用方法如:jenv->CallVoidMethod(jobj,
jmid,
code,
jmsg)
C++子線程調(diào)用Java方法由于JniEnv是線程相關(guān)的,所以子線程中不能使用創(chuàng)建線程的JniEnv;而JVM是進程相關(guān)的,所以可以通過JVM來獲取當前線程的JniEnv,然后就可以調(diào)用Java的方法了。1、獲取JVM對象:JNI_OnLoad(JavaVM*
vm,void*
reserved)2、通過JVM獲取JniEnv:JNIEnv
*env;
jvm->AttachCurrentThread(&env,
0);/* callJavaMethoid*/
jvm->DetachCurrentThread();THANKSCSDN網(wǎng)站:企業(yè)服務(wù):人才服務(wù):CTO俱樂部:高校俱樂部:程序員雜志:CODE平臺:項目外包:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年國際貿(mào)易教育培訓(xùn)代理服務(wù)協(xié)議4篇
- 二零二五版軟件測試技術(shù)咨詢服務(wù)合同范本2篇
- 二零二五年度5G網(wǎng)絡(luò)建設(shè)與運營合作協(xié)議4篇
- 二零二五年度文化旅游產(chǎn)業(yè)毛坯店面租賃協(xié)議書4篇
- 2025年水資源補償基金承包管理協(xié)議3篇
- 2025年廠區(qū)生態(tài)景觀綠化項目合同范本4篇
- 二零二五年度電子產(chǎn)品組裝與功能檢測合同模板3篇
- 2025年度拆除工程風(fēng)險評估與管理合同4篇
- 二零二五版木坑果場承包經(jīng)營與產(chǎn)業(yè)鏈延伸合作協(xié)議2篇
- 二零二五版智能化辦公空間租賃服務(wù)協(xié)議
- 2024高考復(fù)習(xí)必背英語詞匯3500單詞
- 消防控制室值班服務(wù)人員培訓(xùn)方案
- 《貴州旅游介紹》課件2
- 2024年中職單招(護理)專業(yè)綜合知識考試題庫(含答案)
- 無人機應(yīng)用平臺實施方案
- 挪用公款還款協(xié)議書范本
- 事業(yè)單位工作人員年度考核登記表(醫(yī)生個人總結(jié))
- 盾構(gòu)隧道施工數(shù)字化與智能化系統(tǒng)集成
- 【企業(yè)盈利能力探析文獻綜述2400字】
- 2019年醫(yī)養(yǎng)結(jié)合項目商業(yè)計劃書
- 2023年店鋪工程主管年終業(yè)務(wù)工作總結(jié)
評論
0/150
提交評論