版權(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學年廣西貴港市名校高一上學期入學聯(lián)考英語試題(解析版)
- 2024屆廣東省廣州市天河區(qū)高考三模地理試題(解析版)
- 2023-2024學年云南省文山州高一下學期期末地理試卷(解析版)
- 2024年微合金粉末合作協(xié)議書
- 2024年印刷電路板化學品項目合作計劃書
- 2024年直型熒光燈管項目建議書
- 2024年輸注延長管合作協(xié)議書
- 2024年鋅鎳蓄電池合作協(xié)議書
- 2024年地板護理品項目發(fā)展計劃
- 2024智慧校園管理平臺設(shè)計規(guī)范
- 工程訓練(廣東工業(yè)大學)智慧樹知到答案2024年廣東工業(yè)大學
- 酒店管理專業(yè)崗位分析總結(jié)報告
- 故事繪本刑天舞干戚
- 2024-2029年女裝套裝行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 田徑運動會體育道德風尚獎評比細則
- 垃圾制氫工藝流程
- 新生兒真菌感染
- 2023-2024學年廣西南寧市高一年級上冊期中考試數(shù)學質(zhì)量檢測模擬試題(含解析)
- 2024年度自學ps認識蒙版基本原理及案例演示
- 股份期權(quán)協(xié)議
- 《兒科護理學》課件-新生兒分類
評論
0/150
提交評論