cocos2d-x的多线程学习资料

资料1:pthreads官网 https://computing.llnl.gov/tutorials/pthreads/  各种api,各种例子

资料2:http://www.ityran.com/archives/3536

1.不要调用任何会引起CCObject::retain(),CCObject::release() 或者 CCObject::autorelease()的方法,因为CCAutoreleasePool并不是线程安全。更多详细介绍请参照“Reference Count and AutoReleasePool in Cocos2d-x(cocos2d-x中的引用计数和自动释放池)”。在Cocos2d-x引擎中,CCAutoreleasePool的使用无处不在,所以我的建议就是:不要在新线程中点用任何cocos2d-x API除了数据结构

2.如果你想要在新线程中加载资源,你可以调用CCTextureCache::addImageAsync()

PS:

2014.01.07 花了2天的时间,研究了一下CCTextureCache::addImageAsync()的源代码,又用了两天参考它实现了自己的SocketThread,学无止境!

3. pthread_cond_wait() 似乎有bug,首次执行时并不能正常等待,但是,后续可以很好的工作。

如果我们确保retain(), release() 和 autorealese()是线程安全的,那么线程互斥就变得必须。因为cocos2d-x框架会在每个消息循环(message loop)最后释放自动释放池,使用线程互斥会引起性能问题。

顺便说一下,OpenGL上下文(OpenGL context)并不是线程安全的,这个你应该永远记住。

cocos2d-x/extensions/network/HttpClient.cpp使用了 pthread pthread_mutex_t  来创建网络线程。你可以看看使用示例。


资料3:

【玩转cocos2d-x之二十二】多线程和同步02-售票 http://blog.csdn.net/jackystudio/article/details/14118939


【Cocos2d-x游戏引擎开发笔记(23)】多线程以及线程同步 http://blog.csdn.net/zhy_cheng/article/details/9116479  这个应该是借鉴了上面的例子

原文的例子是win32下的,mac下需要:

1)#include "pthread.h"

2)Sleep(1),改成 sleep(1)

3)自己新建Student.h 和studeng.cpp


资料4:

【玩转cocos2d-x之二十三】多线程和同步03-图片异步加载 http://blog.csdn.net/jackystudio/article/details/15334159



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值