美文网首页
C++ 两个线程交替打印

C++ 两个线程交替打印

作者: 东京的雨不会淋湿首尔 | 来源:发表于2021-09-08 17:30 被阅读0次
    #include <bits/stdc++.h>
    
    using namespace std;
    
    mutex mu;
    condition_variable cv;
    bool ready = true;
    void threadFunc(int *i,int tid){
        unique_lock<mutex> lck(mu);
        auto id=this_thread::get_id();
        while (1){
            if(tid == 0){
                while(!ready) cv.wait(lck);
                (*i)++;
                cout<< id<<" "<< *i<<endl;
                ready=false;
            }else{
                while(ready) cv.wait(lck);
                (*i)++;
                cout<< id<<" "<< *i<<endl;
                ready= true;
            }
            cv.notify_all();
            this_thread::sleep_for(chrono::seconds(1));
        }
    
    }
    
    int main()
    {
        int i=0;
        thread t1(threadFunc,&i,0);
        thread t2(threadFunc,&i,1);
        t1.join();
        t2.join();
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:C++ 两个线程交替打印

          本文链接:https://www.haomeiwen.com/subject/grgvwltx.html