c++多线程共享数据与异步的实现
Admin | 2025-12-4 15:00:23 | 被阅次数 | 12
/*
多线程共享数据与异步的实现
*/
#include <iostream>
#include <vector>
#include <chrono>
#include <mutex>
#include <atomic>
#include <thread>
using namespace std;
atomic<int> c(6);
mutex print_locak;//该变量可自行取名
void new_thread(thread::id mainid){
int temp = c++;
cout<<"主ID:"<<mainid<<";子ID:"<<this_thread::get_id()<<";temp:"<<temp<<endl;
if(temp==9){
this_thread::sleep_for(chrono::seconds(3));
{
lock_guard<mutex> lock(print_locak);
cout<<"\n子ID为:"<<this_thread::get_id()<<",休息秒数:"<<3<<";temp:"<<temp<<endl;
}
}
}
int main() {
cout<<"主线程开始,ID为:"<<this_thread::get_id()<<endl;
vector<thread> T;
for(int i=0;i<6;i++){
T.emplace_back(new_thread,this_thread::get_id());
}
for(auto& t:T){
if(t.joinable()){
t.join();
}
}
return 0;
}
/*
主线程开始,ID为:1
主ID:1;子ID:2;temp:6
主ID:1;子ID:7;temp:7
主ID:1;子ID:6;temp:8
主ID:1;子ID:4;temp:9
主ID:1;子ID:5;temp:10
主ID:1;子ID:3;temp:11
子ID为:4,休息秒数:3;temp:9
*/