亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

jni調試3(線程調試env變量問題)

2024-06-28 13:19:25
字體:
來源:轉載
供稿:網友
jni調試3(線程調試env變量問題)

jni層調試線程死機原因

一,導致死機原因:

jni層中線程函數中只要添加調用env的函數,,就會死機 二,解決方法第一我們應該理解:①(獨立性) JNIEnv 是一個與線程相關的變量,即線程A有一個 JNIEnv變量, 線程B也有一個JNIEnv變量,由于線程相關,所以A線程不能使用B線程的 JNIEnv 結構體變量。那么如何保證了每個線程JNIEnv的獨立性呢?

一個java對象通過JNI調用DLL中一個send()函數向服務器發送消息,不等服務器消息到來就立即返回,同時把JNI接口的指針JNIEnv *env(虛擬機環境指針),和jobject obj保存在DLL中的變量里.一段時間后,DLL中的消息接收線程接收到服務器發來的消息,并試圖通過保存過的env和obj來調用先前的java對象的方法(相當于JAVA回調方法)來處理此消息此時程序會突然退出(崩潰).

即前臺JAVA線程發送消息,后臺線程處理消息,歸屬于兩個不同的線程,不能使用相同的JNIEnv變量,這里可以利用一個機制: 利用全局的 JavaVM * 指針得到當前線程的 JNIEnv* 指針,與在C++中兩個線程使用TLS進行局部存儲類似的原理。

具體方法:

獲取全局的JavaVM變量:

/* Our VM */JavaVM *g_vm;

env->GetJavaVM(&g_vm); //來獲取JavaVM指針.獲取了這個指針后,將該JavaVM保存起來。(轉錄)

②(公共性) 先了解TLS(thread-local storage)

線程是執行的單元,同一個進程內的多個線程共享了進程的地址空間,線程一般有自己的棧,但是如果想要實現某個全局變量在不同的線程之間取不同的值,而且不受影響。一種辦法是采用線程的同步機制,如對這個變量的讀寫之處加臨界區或者互斥量,但是這是以犧牲效率為代價的,能不能不加鎖呢?線程局部存儲就是干這個的。

解決以上兩個問題:1首先定義全局變量
namespace android{       static JavaVM* gJavaVM  = NULL;  //定義一個全局Java VM引用對象       static jobject gJavaObj = NULL; //定義一個全局Java object對象,對于java層的類對象    ......       

2其次在調用某個線程的函數中定義:(保證線程在進程中資源的公共性,這兩句是把參數傳給所開線程)

JNIEXPORT void JNICALL Java_Test_setEnev(JNIEnv *env, jobject obj)  {      env->GetJavaVM(&gs_jvm); //保存到全局變量中JVM       //直接賦值obj到DLL中的全局變量是不行的,應該調用以下函數:       gs_object=env->NewGlobalRef(obj);     HANDLE ht=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFun,0,NULL,NULL);  }

3在線程函數中 引用: (保證線程函數 對應 env 和class)
void WINAPI ThreadFun(PVOID argv)//JNI中線程回調這個方法   {    JNIEnv *env;   gs_jvm->AttachCurrentThread((void **)&env, NULL);    //對應這幾句說白了就是從上面函數中把變量取出來在該線程中使用 jclass cls = env->GetObjectClass(gs_object);   //獲取JAVA線程中的全局對象 jfieldID fieldPtr = env->GetFieldID(cls,"value","I");   // 獲取JAVA對象   while(1)   {      Sleep(100);     //這里改變JAVA對象的屬性值(回調JAVA)      env->SetIntField(gs_object,fieldPtr,(jint)gs_i++);    }  }

三,我們在網上看到有些關于jni的程序資料用了(*env)->;

我們需要謹記:在linux下如果.c文件中用 “env->” 編譯會找不到此結構,必須用“(*env)->”,或者改成.cpp文件,以 c++的方式來編譯。

------------------------------------------------------------------------
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美一区二区三区奶水| 精品女厕一区二区三区| 国产精品入口免费视频一| 亚洲二区在线播放视频| 日韩在线观看视频免费| 亚洲91精品在线观看| 午夜精品久久久久久久久久久久久| 91在线观看免费网站| 不卡av电影在线观看| 97超视频免费观看| 久久久久亚洲精品| 久久av.com| 欧美高清不卡在线| 伊人久久综合97精品| 久久免费成人精品视频| 51ⅴ精品国产91久久久久久| 国产91在线视频| 91欧美激情另类亚洲| 国产91在线高潮白浆在线观看| 青青草原一区二区| 欧美在线欧美在线| 日韩av有码在线| 欧美福利视频在线观看| 欧美极品少妇xxxxⅹ免费视频| 欧洲精品在线视频| 色樱桃影院亚洲精品影院| 91久久夜色精品国产网站| 国产91精品久久久久久| 午夜美女久久久久爽久久| 欧美大肥婆大肥bbbbb| 成人av电影天堂| 国产精品女人久久久久久| 亚洲欧美日韩图片| 97视频在线观看免费| 亚洲精品国产美女| 欧美性xxxxxx| 成人福利网站在线观看11| 亚洲四色影视在线观看| 成人黄色av播放免费| 成人激情春色网| 久久久女女女女999久久| 亚洲精品日韩久久久| 成人国产精品免费视频| 91免费欧美精品| www.xxxx精品| 91香蕉国产在线观看| 亚洲丝袜在线视频| 亚洲精选在线观看| 91精品久久久久久久久久久久久久| 国产精品大陆在线观看| 亚洲性日韩精品一区二区| 性欧美xxxx交| 富二代精品短视频| 日韩av在线高清| 久久人人爽人人爽爽久久| 午夜精品一区二区三区在线视| 欧美小视频在线观看| 国产欧美精品va在线观看| 狠狠干狠狠久久| 久久亚洲国产精品| 亚洲精选中文字幕| 国产精品国模在线| 久久久久久国产精品久久| 亚洲精品在线观看www| 久久人人看视频| 成人黄色午夜影院| 欧美午夜www高清视频| 操91在线视频| 国产精品亚洲综合天堂夜夜| 久久精品男人天堂| 久久久999成人| 日韩人体视频一二区| 亚洲国产婷婷香蕉久久久久久| 久久精品视频免费播放| 欧美在线xxx| 亚洲国产日韩欧美在线99| 亚洲人成在线播放| 亚洲第一综合天堂另类专| 国产精品久久久久一区二区| 黑人与娇小精品av专区| 欧美日韩在线一区| 欧美成人中文字幕在线| 欧美大尺度电影在线观看| 51精品在线观看| 久久国产精品久久精品| 国产欧美在线看| 亚洲成avwww人| 亚州欧美日韩中文视频| 亚洲国产天堂久久综合| 亚洲香蕉伊综合在人在线视看| 一区二区三区视频免费| 久久99精品视频一区97| 亚洲欧美在线一区二区| 日韩久久免费视频| 91成人精品网站| 美女福利视频一区| 69久久夜色精品国产69乱青草| 成人日韩在线电影| 亚洲福利视频专区| www国产91| 国产成人极品视频| 日韩精品极品毛片系列视频| 欧美福利小视频| 国产精品99免视看9| 国产精品444| 久久精品中文字幕一区| 国产精品久久久久久久久久东京| 日本久久久a级免费| 久久香蕉国产线看观看网| 青青久久av北条麻妃黑人| 精品爽片免费看久久| 麻豆一区二区在线观看| 综合久久五月天| 亚洲国内高清视频| 久久久之久亚州精品露出| 国产亚洲欧美另类中文| 午夜免费在线观看精品视频| 97精品伊人久久久大香线蕉| 精品久久久久久久久久国产| 亚洲第一区第一页| 青青久久aⅴ北条麻妃| 久久777国产线看观看精品| 日韩天堂在线视频| 97在线观看视频| 日韩电影中文字幕在线观看| 国产美女91呻吟求| 日韩成人高清在线| 国产精品美腿一区在线看| 日韩人在线观看| 最好看的2019年中文视频| 精品成人久久av| 日韩精品电影网| 国产日韩在线一区| 日韩精品中文字幕在线| 亚洲网站在线播放| 亚洲九九九在线观看| 色琪琪综合男人的天堂aⅴ视频| 欧美www视频在线观看| 2019国产精品自在线拍国产不卡| 欧美极品少妇xxxxx| 原创国产精品91| 久久精品国产一区二区三区| 精品国产成人av| 国产精品美女999| 成人亚洲综合色就1024| 国产精品日韩专区| 丝袜一区二区三区| 在线a欧美视频| 国产亚洲精品久久久久动| 国产欧美日韩丝袜精品一区| 日韩精品久久久久久福利| 久久五月天综合| 国产精品极品美女粉嫩高清在线| www.亚洲男人天堂| 色噜噜亚洲精品中文字幕| 亚洲国产精品国自产拍av秋霞| 亚洲综合在线做性| 国产精品aaaa| 亚洲高清免费观看高清完整版| 欧美视频在线观看 亚洲欧| 成人伊人精品色xxxx视频| 日韩欧美国产网站| 日韩美女视频在线观看| 精品久久久久久亚洲精品|