版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C07_f问题集:基於軟硬整合觀點进程、线程和JNI架构(f)By 高煥堂A3.4-JNI 接续上一个题目,基于JNI的EIT造形,让线程在执行插件(就是*.so)时,都能随时透过JNIEnv对象来与(就是 VM)来通信;如下图所示。 请问,在线程执行f1()、f2() 时,透过JNIEnv对象来与 VM来通信,有何目的呢?線程th-x*so()fn()f2()f1()JNIEnv (th-x)VM()相关问题 请问:为什么不直接与VM通信,而要透过JNIEnv对象呢? 请问:JNIEnv对象用来储存什么信息或数据呢?A3.5-JNI 接续上一个题目,不同的线程,会使用不同的JNIEnv对向来
2、与 VM通信;如下述两个图所示。 请问,这样能有效化解多线程的冲突问题吗?線程th-x線程th-yf2()f1()JNIEnv (th-y)JNIEnv (th-x)VM()圖3.5A線程th-x線程th-yf2()f1()JNIEnv (th-y)JNIEnv (th-x)VM()圖3.5B提示 回想,当我们在写Web程序时,都会用到Session对象。 这个Session对象与JNIEnv对象的角色是一致的;两者有异曲同工之妙。 每次浏览器建立完成一个Connection(如同一条线程),都会获得一个专用的Session对象。A3.6-JNI接续上一个题目。有一个线程(th-x)先进入EI
3、T造形去执行f1(),如下图3.6的Step-1所示。做了1+2+3+ + 10的计算,并计算出结果(即sum值) 。然后,th-x就离开f1()返回到Java 层了。随后,线程(th-x)再度进入EIT造形去执行f2()插件, 想取得先前f1()所计算出来的sum值。如下图3.6的Step-2所示。 请问:f1()插件应该将sum值储存在哪里, 才能让f2()顺利拿到sum值呢?線程th-xcall f1()f2()void f1() sum值 =Adder.sum(10) ; .VM()圖3.6: Step-1線程th-xcall f2()void f2() 回傳 sum值;.f1()VM
4、()圖3.6: Step-2提示 由于,同一条线程去执行f1()和f2(), 此时f1()和f2()都能存取同一个JNIEnv对象。 能不能透过*.so的公用变量(GlobalVariable)呢?A3.7-JNI 接续上一个题目。刚才是同一个线程(th-x) 去执行f1()和f2()插件。 如果分别由不同的线程去分别执行f1()和f2() 插件的话,f2()想取得先前f1()所计算出来的sum值。如下图3.7所示。線程th-xcall f1()f2()void f1() sum值 =Adder.sum(10) ; .VM()圖3.7: Step-1線程th-ycall f2()void f2
5、() 回傳 sum值;.f1()VM()圖3.7: Step-2提示 由于,由不同的线程去执行f1()和f2(),此时f1()和f2()使用不同的JNIEnv对象。 能不能透过*.so的公用变量(Global Variable)呢?A3.8-JNI 当 UI线程经由VM而去执行时,如下图所示。 请问:在执行时,UI线程如何去创建一个小线程呢? 如何撰写其代码(创建一个小线程)呢?UI線程call f1()f2()void f1() / 創建一個小線程.VM()相关问题 在里所创建的小线程,VM有给它专属的JNIEnv对象吗? 如果没有的话;请问:如何去向VM索取一个JNIEnv对象呢? 索取J
6、NIEnv对象,有何目的呢?/* com.misoo.counter.CounterNative.cpp */#include #include #include com_misoo_counter_CounterNative.h jmethodID mid;jclass mClass; JavaVM *jvm; pthread_t thread; int n, sum;void* trRun( void* );void JNICALL Java_com_misoo_counter_CounterNative_nativeSetup(JNIEnv *env, jobject thiz) jcl
7、ass clazz = env-GetObjectClass(thiz); mClass = (jclass)env-NewGlobalRef(clazz);mid = env-GetStaticMethodID(mClass, callback, (I)V);void JNICALL Java_com_misoo_counter_CounterNative_nativeExec (JNIEnv *env, jobject thiz, jint numb)n = numb;pthread_create( &thread, NULL, trRun, NULL);void* trRun( void* )int status;JNIEnv *env;bool isAttached = false;status = jvm-GetEnv(void *) &env, JNI_VERSION_1_4); if(status AttachCurrentThread(&env, NULL);if(status 0)return NULL; isAttached = true;sum = 0;f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京市建筑施工企业安全生产管理人员考试(专职安全生产管理人员·C3类)历年参考题库含答案详解
- 2026勘察设计注册土木工程师考试(岩土·专业知识)历年参考题库含答案详解
- 2026年公司环境保护审计报告环境保护措施与成效审计报告
- 2026年网络安全风险评估与控制报告
- 2026年企业客户关系管理效果评估与优化报告
- 2026年乡村振兴战略实施情况报告
- 中国精算师职业资格考试(准精算师概率论与数理统计)模拟试题及答案 (吉林省延边州2026年)
- 2026年供应商质量评估报告
- 2026年科普知识竞赛试题库及答案(共60题)
- 2026年煤矿安全技术培训考试试题及答案
- 2025年下半年信息安全工程师《案例分析》真题及答案解析
- 餐厅厨房装修施工进度计划及保证措施
- 2027届高考一轮作文复习-思辨类材料作文审题立意:明确概念建构关系
- 生物化学检验题库及答案
- 酒店管理人才培养方案
- 麻纺厂工作制度及流程
- 超危大模板及支撑体系专项施工方案(专家论证修改后)2022
- 卫生间抽纸管理制度
- Unit3FamilymattersDevelopingideasJustabrother课件-高中英语外研版
- 手术室护士长年终述职课件
- 供电公司电费班培训课件
评论
0/150
提交评论