Cocos2dx 3.x在Android下多线程加载问题(thread exiting, not yet detached)

原创 2014年10月10日 20:21:26

随着cocos2dx的升级,从3.0版本开始弃用pthread,改用C++11新加入的 std::thread,个人感觉是后者更好用。


如标题所描述的问题在pthread和std::thread中都会出现,具体的原因在此不细说,具体看连接中的博文:


Cocos2d-x 3.0多线程异步资源加载


在此只贴出用std::thread情况下的吃力例程:

由于JNI只在Android下才用到,平台区分处理少不了

头文件包含:

#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/JniHelper.h"
#include<jni.h>
#endif

代码处理:

#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    JavaVM *vm; 
    JNIEnv *env; 
    vm = JniHelper::getJavaVM(); 
  
    JavaVMAttachArgs thread_args; 
  
    thread_args.name = "Resource Load"; 
    thread_args.version = JNI_VERSION_1_4; 
    thread_args.group = NULL; 
  
    vm->AttachCurrentThread(&env, &thread_args);
#endif

    // 这部分是正常处理的代码
    // ...

#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    vm->DetachCurrentThread();
#endif


看如上的代码,其实只是在Android下需要做一些额外的处理,核心的代码不动,pthread和std::thread处理是一样的。

cocos2dx多线程以及线程同步 与 cocos2dx内存管理与多线程问题

cocos2d-x引擎在内部实现了一个庞大的主循环,每帧之间更新界面,如果耗时的操作放到了主线程中,游戏的界面就会卡,这是不能容忍的,游戏最基本的条件就是流畅性,这就是为什么游戏开发选择C++的原因。...
  • Kaitiren
  • Kaitiren
  • 2013年11月07日 16:17
  • 24142

<cocos2dx 随记> 关于cocos2dx接Android sdk的一些坑

简单说说UI线程 :在Android中,有个非常重要的家伙非常霸道,那就是UI线程。这霸道之一:不能被阻塞。 之二:系统对每一个组件的调用都从UI线程分发出去。 简单说说openGL线程:但凡c...

关于在cocos2dx中的转UI线程

Android里面有runOnUiThread,IOS下有performSelectorOnMainThread。 cocos2dx在3.0以上的版本中则可以用Scheduler::performF...
  • zzstack
  • zzstack
  • 2015年06月24日 11:14
  • 1179

Cocos2dx 对android支持原理

Cocos2dx 基于opengl es 实现跨平台功能,虽然android 已经支持native ,还是需要使用到android平台中的特性。 首先从程序的主入口 MainActivity...

Java字节码框架ASM-读写字节码的用法

http://www.blogjava.net/vanadies10/archive/2011/02/23/344899.html 在ASM3.3.1中,提供了7个jar包,分别是  ...

ARM飞思卡尔I.MX6开发板I.MX6Q核心板 IMX6 cortex A9双网口

ARM飞思卡尔I.MX6开发板I.MX6Q核心板 IMX6 cortex A9双网口 内存工作频率实测629Mhz,可长时间稳定运行。批量可换更大容量DDR和 EMMC。可满足户外、批量可换更大容量D...

Cocos2D-x , CCTextureCache的多线程加载原理和使用方法

Cocos2D-x , CCTextureCache的多线程加载原理和使用方法 , 学习的编程的道路

cocos2dx3.x《格斗》类游戏加载界面(一)

最终呈现的效果图如下: cocos2dx版本:cocos2d-x3.8 IDE版本:VS2013 首先使用cocos命令创建项目:cocos new GeDou -p com.zhenq...

cocos2dx 2.x 资源加载和释放问题

前言:好久没来写东西了,这表示,最近没遇到太大的问题,否则就来这里吐槽了,不过最近还是学到不少的,自己也总结了不少,但是就是懒得过来写。不得不说,前段时间特别忙,时间总也不够用,总觉得浪费过来写东西有...
  • Sozell
  • Sozell
  • 2014年12月20日 23:37
  • 4885

cocos2dx 中 Android NDK 加载动态库的问题

闲聊 最近在接入各个平台的SDK,遇到了不少问题,也从中了解了不少知识,之前一直觉得没啥好写的,毕竟做了4个月的游戏开发,也没有碰上什么真正的大问题,cocos2dx的引擎包得也很好,能让人把大...
  • guggy
  • guggy
  • 2014年06月26日 13:02
  • 1006
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2dx 3.x在Android下多线程加载问题(thread exiting, not yet detached)
举报原因:
原因补充:

(最多只允许输入30个字)