cocos2dx學習筆記(多執行緒)

2021-06-22 23:13:17 字數 2264 閱讀 1534

多執行緒的實現:

pthreadtest.h

#ifndef __mtnotificationqueue_h

#define __mtnotificationqueue_h

#include "cocos2d.h"

#include #include"pthread\pthread.h"

using_ns_cc;

using namespace std;

//執行緒安全的訊息佇列

class mtnotificationqueue : public ccobject

};static cgarbo garbo;

typedef struct

notificationargs;

//訊息佇列

vectornotifications;

mtnotificationqueue(void);

public:

static mtnotificationqueue* sharednotificationqueue();

void postnotifications(float dt);

~mtnotificationqueue(void);

void postnotification(const char* name, ccobject* object);

};

#endif

pthreadtest.cpp

#include "pthreadtest.h"

//互斥鎖,全域性唯一

pthread_mutex_t sharednotificationqueuelock;

//管理互斥鎖的生命週期

class lifemanager_pthreadmutex

~lifemanager_pthreadmutex()

}__lifemanager_sharednotificationqueuelock(&sharednotificationqueuelock);

//生命週期鎖類,管理鎖開關

class lifecirclemutexlocker

~lifecirclemutexlocker()

};

#define lifecirclemutexlock(mutex) lifecirclemutexlocker __locker__(mutex)

mtnotificationqueue* mtnotificationqueue::minstance = null;

mtnotificationqueue::mtnotificationqueue(void)

mtnotificationqueue::~mtnotificationqueue(void)

//訊息佇列的單例

mtnotificationqueue* mtnotificationqueue::sharednotificationqueue()

return minstance;

}//訊息佇列的處理

void mtnotificationqueue::postnotifications(float dt)

notifications.clear();

} //單個訊息加入

void mtnotificationqueue::postnotification(const char* name, ccobject* object)

backgroundlayer.cpp

#include "backgroundlayer.h"

#include "user.h"

#include"pthreadtest.h"

using_ns_cc;

ccscene* backgroundlayer::scene()

// on "init" you need to initialize your instance

ccimage *bgimage;

void* loadimages(void* arg)

void backgroundlayer::loadimagefinish(ccobject* sender)

bool backgroundlayer::init()

while (0);

return bret;

}

cocos2dx 多執行緒

2.加標頭檔案 include pthread pthread.h 直接上 編譯出錯 fatal error c1083 無法開啟包括檔案 sched.h no such file or directory,在pthread的相同目錄下有這個標頭檔案,在專案的屬性中加入這個標頭檔案的路徑就可以了 3...

cocos2d x多執行緒操作

先頭檔案定義 void threada 再在.cpp檔案中新增 1.引入標頭檔案 include std thread t1 login threada,this 取login的位址 t1.detach 主線程和子執行緒互不影響 阻塞主線程 執行子執行緒完了後才執行主線程 cclog first t...

cocos2dx建立執行緒

為了防止程式假死,需要另起執行緒處理網路連線。好吧,那就從建立執行緒開始。這次我的環境是在mac下。在網上查閱和參考了很多資料,感謝這些無私奉獻的前輩們的努力。進入話題。標頭檔案 cpp view plain copy pthread t th socket 起這個名字本打算用在socket上的 i...