cocos2dx3.4的多线程bug严重
来源:互联网 发布:棋牌源码有什么用 编辑:程序博客网 时间:2024/04/30 15:19
这几天发现了两个bug,都是多线程的。
1。视频播放器中android方面,Cocos2dxVideoHelper中虽然用了Handler保证播放指令在主线程UI中顺序异步执行,但是还有个问题,就是_createVideoView的时候,有时候主线程方面先进入Cocos2dxVideoView的onMeasure方法,导致设置Cocos2dxVideoView的宽度和高度为0,Cocos2dxVideoView不显示,后来虽然在2dx线程中有设置Cocos2dxVideoView宽度和高度,但是已经没有用了,因为不显示,所以surfaceCreated()方法不执行,播放器不能初始化,播放不了视频。此时解决的方法是在Cocos2dxVideoView的setVideoRect()方法中执行
requestLayout();
invalidate();
来重新布局,激活surfaceCreated()方法。
2。异步加载图片资源卡死问题。
异步加载中,当加载完一张图片,再加载下一张,通过回调再来加载下一张。具体使用到的函数是
Director::getInstance()->getTextureCache()->addImageAsync(texturePath.c_str(), CC_CALLBACK_1(DNLoadingLayer::loadCallBack, this));
在addImageAsync中有_sleepCondition.notify_one()通知异步线程加载。
异步线程中如果没有加载任务,则进入_sleepCondition.wait等待函数。
理论上顺序是这样的,加载完一张图片后,异步线程中则快速进入_sleepCondition.wait等待函数,但是有时候,几率很小,异步线程并没有那么快,主线程则快速发送一个异步加载指令,首先调用了_sleepCondition.notify_one()函数,导致异步线程无法得到通知而卡死。
呵呵
1。视频播放器中android方面,Cocos2dxVideoHelper中虽然用了Handler保证播放指令在主线程UI中顺序异步执行,但是还有个问题,就是_createVideoView的时候,有时候主线程方面先进入Cocos2dxVideoView的onMeasure方法,导致设置Cocos2dxVideoView的宽度和高度为0,Cocos2dxVideoView不显示,后来虽然在2dx线程中有设置Cocos2dxVideoView宽度和高度,但是已经没有用了,因为不显示,所以surfaceCreated()方法不执行,播放器不能初始化,播放不了视频。此时解决的方法是在Cocos2dxVideoView的setVideoRect()方法中执行
requestLayout();
invalidate();
来重新布局,激活surfaceCreated()方法。
2。异步加载图片资源卡死问题。
异步加载中,当加载完一张图片,再加载下一张,通过回调再来加载下一张。具体使用到的函数是
Director::getInstance()->getTextureCache()->addImageAsync(texturePath.c_str(), CC_CALLBACK_1(DNLoadingLayer::loadCallBack, this));
在addImageAsync中有_sleepCondition.notify_one()通知异步线程加载。
异步线程中如果没有加载任务,则进入_sleepCondition.wait等待函数。
理论上顺序是这样的,加载完一张图片后,异步线程中则快速进入_sleepCondition.wait等待函数,但是有时候,几率很小,异步线程并没有那么快,主线程则快速发送一个异步加载指令,首先调用了_sleepCondition.notify_one()函数,导致异步线程无法得到通知而卡死。
呵呵
0 0
- cocos2dx3.4的多线程bug严重
- 史上最严重的BUG
- CSDN的严重BUG!
- CAtlHttpClient的一个严重bug
- cocos2dx3.10 ClippingNode存在的bug
- 掌柜大作战(25):健身房签到系统,多线程使用不当造成的1个严重bug
- CURL多线程的严重错误
- 10gR2一个很严重的bug
- 台达说明书严重的BUG
- 软件史上最严重的十个Bug
- Java nio的一个严重BUG
- Bug的严重程度、优先级如何定义
- Hadoop-HDFS DFSClient的严重bug
- java nio的一个严重BUG
- java nio的一个严重BUG
- Bug的严重程度、优先级如何定义
- Bug优先级与严重程度的划分
- Bug的严重等级和优先级
- 3Sum Closest
- 移动开发者常见的HTTP请求响应状态码概述
- 十五、多项式乘法与快速傅里叶变换
- ScrollView中嵌套GridView只能显示一行的解决办法
- XIB
- cocos2dx3.4的多线程bug严重
- 快速排序总结
- 移动IM开发那些事:技术选型和常见问题
- URL中的特殊字符的作用
- contourArea函数
- Socket之广播
- C++虚继承的内存模型
- CAP理论和BASE模型
- class和struct的区别