13.cocos2d-x多執行緒(二)執行緒鎖
阿新 • • 發佈:2019-02-12
xxx.h檔案:
int count;
void threadA();
void threadB();
xxx.cpp檔案:
/*
引入標頭檔案#include <thread>
引入std::mutex _mutex;
*/
//1.新建執行緒A
std::thread t1(&Login::threadA,this);//取Login的地址
t1.detach();//設定主執行緒和子執行緒互不影響
//2.新建執行緒B
std::thread t2(& Login::threadB, this);//取Login的地址
t2.detach();//設定主執行緒和子執行緒互不影響
//3.兩個執行緒對同一個資源count進行操作
count = 0;
void Login::threadA()
{
while (count < 10) {
//加鎖
_mutex.lock();
count++;
//設定本執行緒等待3秒
this_thread::sleep_for(chrono::seconds(3));
CCLOG("A Thread Id is: %x,count value is %d" , this_thread::get_id(), count);
//解鎖
_mutex.unlock();
}
}
void Login::threadB()
{
while (count < 10) {
//加鎖
_mutex.lock();
count++;
//設定本執行緒等待3秒
this_thread::sleep_for(chrono::seconds(3));
CCLOG("B Thread Id is: %x,count value is %d" , this_thread::get_id(), count);
//解鎖
_mutex.unlock();
}
}