Cocos笔记_Cocos3.0+版本的多线程
2016-12-04 18:35
393 查看
之前从未接触过多线程的概念。今天来学习一下。
2.在Cocos2.x版本中使用的是pthread库。而在3.x版本中,默认编译器是VS2012+,包含了C11的新特性,所以可以直接使用C11中std::thread来创建线程。所以就不管2.x版本的那个pthread,反正本大王没有学过。
3.要使用thread需要包含thread库
4.join()函数是等待子线程结束后,再继续执行主线程。此时主线程执行完之后的子线程资源。
示例代码:
5.如果想要让主线程不需要等待子线程贼可以调用detach()。detach()会将子线程从主线程中分离出来,子线程执行完会自己释放掉子线程的资源。但子线程分离后,之线程则失去了对子线程的控制权。
示例代码:
6.向子线程中传递参数
简单的线程使用大概学到这里。还有一些复杂的用法日后再说。
多线程
1.作用:Cocos中有一个自己的主循环。如果很耗时的操作(比如:资源加载等)写在主循环中。则游戏会出现卡顿,这是对于游戏体验来说是很致命的。此时多线程就可以登场了。2.在Cocos2.x版本中使用的是pthread库。而在3.x版本中,默认编译器是VS2012+,包含了C11的新特性,所以可以直接使用C11中std::thread来创建线程。所以就不管2.x版本的那个pthread,反正本大王没有学过。
3.要使用thread需要包含thread库
#include<thread>
4.join()函数是等待子线程结束后,再继续执行主线程。此时主线程执行完之后的子线程资源。
示例代码:
bool HelloWorld::init() { if(!Layer::init()) { return false; } std::thread t1(&HelloWorld::myThread,this); t1.join() //t1.detach(); CCLOG("在主线程中"); return true; } void HelloWorld::myThread() { CCLOG("在分支线程中"); } /* 结果如下: 在分支线程中 线程...已退出,返回值为0。 在主线程中 */
5.如果想要让主线程不需要等待子线程贼可以调用detach()。detach()会将子线程从主线程中分离出来,子线程执行完会自己释放掉子线程的资源。但子线程分离后,之线程则失去了对子线程的控制权。
示例代码:
std::thread t1(&HelloWorld::myThread,this); t1.detach(); /* 执行结果如下: 在主线程中 在分支线程中 */
6.向子线程中传递参数
bool HelloWorld::init() { if(!Layer::init()) { return false; } std::thread t1(&HelloWorld::myThread,this,100,200); t1.join() //t1.detach(); CCLOG("在主线程中"); return true; } void HelloWorld::myThread(int first,int second) { CCLOG("在子线程中,第一个参数为%d,第二个参数为%d",first,second); } /* 运行结果为: 在子线程中,第一个参数为100,第二个参数为200 线程...已退出,返回值为0。 在主线程中 */
简单的线程使用大概学到这里。还有一些复杂的用法日后再说。
相关文章推荐
- 学习笔记一:在VS2013下配置OpenCV3.0并运行SIFT(原来版本为VS2010下的OpenCV2.2)
- opencv,我的电脑转换2.49版本和3.0版本笔记(vs2015)
- cocos2d-x 3.0 版本学习笔记1
- VS2013上 cocos 3.0版本以上的项目,设置控制台输出日志
- Java学习笔记(3)----网络套接字服务器多线程版本
- 【开发笔记】Redis 3.0 Windows x64版本的安装
- cocos网络编程C++版本(视频笔记)
- 搭建win32 cocos3.0 正式版本 创建项目 最新 2014.4.28
- 自己实现的一个python版本的多线程 ftp扫描器,python版本3.0以上
- windows多线程(sunxin vc++ 笔记2)
- 多线程(7): JT第5章笔记
- 多线程(3):JT第2章笔记
- petshop3.0-jcc学习笔记(一)系统架构
- EJB 3.0 学习笔记——准备工作
- 美国艾迈系统发布RFID中间件3.0版本
- C# 3.0 规范(PDC2005)中文word版本
- 多线程(4):JT第3章笔记
- 孙鑫VC++视频笔记(15)多线程与聊天室的创建
- Microsoft 解决方案框架版本 3.0 概述
- 破解firestorm/DAO 3.0版本