对于我的计算,我需要执行一项特定的任务。为了完成这项任务,我将所有数据和该函数封装到一个对象中:
Check.h:
.ui-helper-hidden-accessible { display:none; }
Check.cpp:
#pragma once
#include<vector>
#include<atomic>
using namespace std;
using digit = short;
class Check
{
private:
digit length, del;
vector< vector<bool> > routes;
public:
Check(digit length, digit del);
void is_compatible(int first, int second, atomic_bool& result) const;
~Check();
};
如果我试图调用此代码:
#include"Check.h"
#include<algorithm>
using namespaced std;
Check::Check(digit length_, digit del_) : length(length_), del(del_)
{
//first iteration
vector<bool> iter(del*2);
for (int i = iter.size() - 1; i >= del; i--)
{
iter[i] = 1;
} //by the end, iter = {0,0,1,1} if del = 2
//get the rest of the permutations
do
{
routes.push_back(iter);
} while (next_permutation(iter.begin(), iter.end()));
}
void Check::is_compatible(int first, int second, atomic_bool& result)
{
for (auto& route : routes)
{
//some calculations using each route
if (condition) result = false;
}
}
线程实际上是否同时工作?他们每个人都需要从check.routes中读取值,那么从多个线程访问那部分内存会有问题吗?为每个线程提供自己的Check对象会更好吗?
另外,我是否正确使用原子类型?
谢谢!