1. 程式人生 > >13.cocos2d-x多執行緒(二)執行緒鎖

13.cocos2d-x多執行緒(二)執行緒鎖

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(); } }