#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++ 兩個線程交替打印
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- synchronized 實現(xiàn) ReentrantLock 實現(xiàn) 運行結(jié)果
- 多線程輸出結(jié)果是不可控的,需要實現(xiàn)的結(jié)果是使用兩個線程交替打印奇偶數(shù) 1.兩個線程同時操作一個變量如: _numb...
- 之前遇到的面試題:如何用兩個線程交替打印1-100的數(shù)字。 思路是使用信號量來控制兩個線程的打印順序。 代碼如下:
- 下班途中刷新聞時看到一道面試題:用程序?qū)崿F(xiàn)兩個線程交替打印 0~100 的奇偶數(shù)??吹健岸嗑€程交替”字樣,瞬間就想...
- 這道java基礎(chǔ)題主要考察的是對java并發(fā)基礎(chǔ)知識的掌握,一般需要掌握多線程中的wait(),notify(),...