cocos2d-x 网络编程三(线程的应用)
来源:互联网 发布:网络用语兔子 编辑:程序博客网 时间:2024/05/22 15:06
基本上,只要是和网络挂上钩的话,就跑不了“线程”这个东西,今天写自己的项目也总算是用上了,其实也没什么难的,和其它操作系统的使用方式大同小异……
为什么说和网络挂上钩就跑不了“线程”呢,因为网络这东西其实是不稳定的,需要单独控制,并且,像我们在使用阻塞型功能时如:前面说的使用curl的基本使用方法中使用的代码,那就会造成界面卡住,甚至是假死……阻塞这东西的意思可以理解为“独占”,所以其它的资源什么的通通都得让道……这时候,线程的优势就体现出来了,我们把带有阻塞型功能的东西放进线程里控制,这样就不会干扰到其它功能的正常交互使用……
在cocos2d-x里有pthread这个东西,想要仔细了解的话直接百度,因此,这个东西和curl一样被定义在了第三方插件的文件目录下,在使用的时候也许会碰到无法引用的情况,像我就碰上了,设定包含目录也没用(菜鸟就是菜鸟啊……),所以直接把三个文件搬到工程class文件下,然后引用即可,也不要忘记加上需要引用的库文件pthreadVCE2.lib。
这章就只说说在cocos2d-x里最简单的线程使用方法:
首先当然就是要引用pthread.h了,然后下面是一个创建线程所需要的一些参数解释,当然,这里引用的是大虾们的东西:
PTW32_DLLPORT int PTW32_CDECL pthread_create (pthread_t * tid,//线程的标示 const pthread_attr_t * attr, //创建线程的参数 void *(*start) (void *), //入口函数的指针 void *arg); //传递给线程的数据
然后我们在.h中定义一个入口函数:
static void* HelloThread(void *r);
定义线程标识:
pthread_t tid
在cpp中让这个函数输出一个信息,当然,你也可以把前面用的网络链接代码给放进来:
void* HelloWorld::HelloThread(void* r) { CCLog("成功开启了一个线程"); return NULL; }
最后只要调用创建线程的代码即可完成:
pthread_create(&tid,NULL,HelloThread,0);
执行代码后将会看到log里输出“成功开启一条线程”,至于多线程同步及通信的话,这东西太复杂,初学的菜鸟主要看下线程互斥锁就差不多了,这里就不再讲述这东西了,自己百度一下就差不多了……睡觉去!
0 0
- cocos2d-x 网络编程三(线程的应用)
- 17.cocos2d-x网络编程三(SocketIO)
- cocos2d-x网络编程
- cocos2d-x网络编程
- Cocos2d-x 网络编程
- cocos2d-x 网络编程Curl
- 详解Cocos2d-x网络编程
- cocos2d-x 网络编程Curl
- Cocos2d-x开发网络游戏(四) 处理网络线程
- Cocos2d-x开发网络游戏(四) 处理网络线程
- 【Cocos2d-x】 HttpClient 网络通信(Http)的简单应用
- 【Cocos2d-x】Cocos2d-X网络编程-HttpRequest/HttpClient/HttpResponse
- 15.cocos2d-x网络编程一(get、post请求)
- 16.cocos2d-x网络编程二(WebSocket)
- cocos2d-x curl+PHP网络编程做排行榜(一)
- cocos2d-x 网络编程二(cURL简单模拟登录的实现)
- cocos2d-x 网络编程二(cURL简单模拟登录的实现)
- cocos2d-x 界面编程三(cocos2d-x2.22版本中cocostudio GUI的控件事件响应)
- C#的winform中控制TextBox中只能输入正整数,首位不能为0
- 全方位认识SQLite(一)
- 什么是连接池?我们为什么需要它?
- 使用 链接服务器执行SELECT、UPDATE、INSERT 或 DELETE 及其它命令
- 全方位认识SQLite(二)
- cocos2d-x 网络编程三(线程的应用)
- Qt之打包发布(NSIS详解)
- 如何使用建造者模式(Builder Pattern)创建不可变类
- Java Web开发字符编码小记
- build WebRTC for android .
- 如何写一个不可变类?
- MongoDB
- 插如法的应用
- LeetCode OJ:Best Time to Buy and Sell Stock III