原创作品,转载请标明:http://www.jb51.cc/article/p-xryantaz-ep.html
和其他框架一样,cocos2d-x允许我们使用多线程进行编程。cocos2d-x v2.2.0使用的是pthread库,是一套用户级线程库,被广泛地使用在跨平台应用上。
1.配置
在使用pthread之前,需要把头文件和库文件链接进来。pthread的官网戳这里,当然cocos2d-x帮我们包含进引擎了。
1.1.头文件
pthread.h放在\cocos2d-x目录\cocos2dx\platform\third_party\win32\pthread\下,右键项目→属性→配置属性→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.线程
- //创建线程
- PTW32_DLLPORTintPTW32_CDECLpthread_create(pthread_t*tid,
- constpthread_attr_t*attr,
- void*(*start)(void*),153); font-weight:bold; background-color:inherit">void*arg);
- //退出线程
- PTW32_DLLPORTvoidPTW32_CDECLpthread_exit(void*value_ptr);
- //取消执行线程
- PTW32_DLLPORTintPTW32_CDECLpthread_cancel(pthread_tthread);
- //删除线程
- intPTW32_CDECLpthread_detach(pthread_ttid);
- //加入线程
- intPTW32_CDECLpthread_join(pthread_tthread,153); font-weight:bold; background-color:inherit">void**value_ptr);
- //初始化线程属性
- intPTW32_CDECLpthread_attr_init(pthread_attr_t*attr);
- //清理线程属性
- intPTW32_CDECLpthread_attr_destroy(pthread_attr_t*attr);
3.2.互斥对象