关注
#include <bits/stdc++.h>
std::mutex data_mutex;
std::condition_variable data_var;
int flag=0;
int i=0;
int array[100]={0};
void modify(int arr[], int i){
int index=rand()%100;
std::cout<<index<<std::endl;
arr[index]=i+1;
}
void printA(int i){
while(1){
std::unique_lock<std::mutex> lck(data_mutex);
data_var.wait(lck, [=]{return flag==i;});
std::cout<<"Threadi:"<<i<<std::endl;
modify(array, i);
flag=(flag+1)%10;
data_var.notify_all();
}
}
int main(){
std::vector<std::thread> thread_arr;
thread_arr.reserve(10);
for(int i=0; i<10; ++i){
thread_arr.emplace_back(std::thread{printA, i});
}
for(int i=0; i<10; ++i){
thread_arr[i].join();
}
}
这个代码,我的想法是用i来区分10个线程,当flag==i的时候,执行当前线程,其他会阻塞等待flag
但是每10个线程生成的index都是一样的,想知道这是怎么回事,有大佬指点吗?
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# offer帮选 #
4800347次浏览 29149人参与
# 实习,不懂就问 #
134296次浏览 1243人参与
# 百融云创求职进展汇总 #
364次浏览 0人参与
# 校招薪资来揭秘 #
342944次浏览 1889人参与
# 实习要如何选择和准备? #
125697次浏览 1476人参与
# OC/开奖 #
280016次浏览 1744人参与
# 2025年终总结 #
18035次浏览 267人参与
# 国企和大厂硬件兄弟怎么选? #
138439次浏览 1671人参与
# 硬件兄弟们 甩出你的华为奖状 #
117770次浏览 701人参与
# 移动求职进展汇总 #
15700次浏览 125人参与
# 第一份工作能做外包吗? #
87933次浏览 586人参与
# 毕业租房也有小确幸 #
148264次浏览 4525人参与
# uu们,春招你还来吗? #
16507次浏览 111人参与
# 记录实习开销 #
169489次浏览 661人参与
# 为了去实习,我赌上了___ #
24056次浏览 219人参与
# 秋招暂停,我将对以下公司做出处罚__ #
43078次浏览 177人参与
# 生物制药的同学已经投递多少份简历了 #
14668次浏览 52人参与
# 面试紧张时你会有什么表现? #
16418次浏览 135人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
14779次浏览 159人参与
# 软开人,秋招你打算投哪些公司呢 #
168560次浏览 1282人参与
# Offer比较,你最看重什么? #
241559次浏览 1487人参与
查看9道真题和解析