【玩转cocos2d-x之二十一】多线程和同步01-pthread库
原创作品,转载请标明:http://www.52php.cn/article/p-xryantaz-ep.html 和其他框架一样,cocos2d-x允许我们使用多线程进行编程。cocos2d-x v2.2.0使用的是pthread库,是一套用户级线程库,被广泛地使用在跨平台应用上。 1.配置在使用pthread之前,需要把头文件和库文件链接进来。pthread的官网戳这里,当然cocos2d-x帮我们包含进引擎了。 1.1.头文件pthread.h放在cocos2d-x目录cocos2dxplatformthird_partywin32pthread下,右键项目→属性→配置属性→C/C++→附加包含目录添加如下,这里要注意附加包含目录是只包含当前目录下的文件,而不会包含该目录下子目录。 1.2.库文件一样的,右键项目→属性→配置属性→链接器→输入→附加依赖项,添加pthreadVCE2.lib即可。v2.2.0会自动包含,这步可省。 2.pthread库 2.1.主要功能pthread库包含了四大部分功能: (1)Thread Management:线程管理。提供了线程的创建,删除,结束等功能,也包含了对线程属性的修改和设置。 (2)Mutexex:互斥对象。用于处理同步机制。提供了创建,销毁,加锁,解锁等功能,也包含了对互斥对象属性的修改和设置。 (3)Condition variables:条件变量。提供了基于程序员提供条件的进程间通讯互斥锁的操作,包含了对其属性的修改和设置。 (4)Synchronization:同步相关。提供了操作读写锁等功能。 2.2.命名规则 3.线程和互斥对象我们这里主要了解线程和互斥对象,也是最常用到的。 3.1.线程
3.2.互斥对象
(1)静态初始化
4.注意
cocos2d-x使用多线程应注意的问题(来自官方文档): (1)不能调用涉及到CCObject::retain(),CCObject::release() 或者 CCObject::autorelease()的函数,因为CCAutoreleasePool不是线程安全的。因为cocos2d-x框架中无处不在使用CCAutoreleasePool,所以建议不要在新线程中调用cocos2d-x的API。 (4)OpenGL context也不是线程安全。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |