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
原创粉丝点击