Const,从多个线程调用的纯成员函数?

时间:2017-04-17 17:59:37

标签: c++ multithreading oop

对于我的计算,我需要执行一项特定的任务。为了完成这项任务,我将所有数据和该函数封装到一个对象中:

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对象会更好吗?

另外,我是否正确使用原子类型?

谢谢!

0 个答案:

没有答案