我用的vector<atomic<bool>>
是C++,代码在这里:
#include <iostream>
#include <thread>
#include <atomic>
#include <vector>
using namespace std;
int main() {
int n = 10;
int count = 20;
vector<atomic<bool>> flags(n);
vector<thread> jobs;
for (int i = 0; i < count; i++) {
jobs.emplace_back([&](){
bool old_val = false;
for (int i = 0; i < n; i++) {
if (flags[i].compare_exchange_strong(old_val, true)) {
cout<<1;
break;
}
}
});
}
for (int i = 0; i < count; i++) {
jobs[i].join();
}
return 0;
}
不知道为什么,不管变量的值count
是什么,输出的内容总是“11111”,也就是说compare_exchange_strong()
只成功了5次,是.txt文件长度的一半vector<atomic<bool>>
。
我预计输出将为1111111111
(十个 1)。
谁能告诉我为什么?谢谢!!!!