将具有构造函数的类的成员函数传递给std :: thread

时间:2015-03-03 01:36:04

标签: c++ multithreading c++11

我在一个类中定义了一个函数,它接受了一系列构造函数,并试图将函数(fillgamma)传递给std::thread。构造函数本身非常大,所以每次我想使用它时,我都无法将它们作为参数传递给函数。我尝试编译时遇到C3867错误,我很确定是由于行标记为坏行。

我的项目已经变得非常大,所以我已经放弃了一些外围设备的东西,但这里是类定义:

class gamma_threads
{
public:
    void fillgamma(int t, float &total);

    gamma_threads(std::vector<float> delpro, float Stau,float gamma0, int N);
    ~gamma_threads();

private:
    std::vector<float> delpro;
    const float Stau, gamma0;
    float gint=0;
    const int N;

};

这是试图实现线程的代码体:

gamma_threads T(delpro, Stau, gammafbb[0], N); // vector, float, float, int

while (flag==1)
{
    std::thread th[8];
    for (int i = 0; i < 8; i++)
    { 
        if (!tlist.empty())  //tlist is a queue where I store the values to be fed to the threads
        {
            int temp_t = tlist.front();

            th[i] = std::thread((T.fillgamma, temp_t, gammafbb[temp_t])); // bad line
            if (temp_t + 8 <= tmax){ tlist.push(temp_t + 8); }
            else {  flag == 0; }
        }
    }
    for (int i = 0; i < 8; i++)
    {
        th[i].join();
    }
}

抱歉,如果代码本身效率低下/丑陋,这是我第一次使用C ++,所以任何其他建设性的批评都会受到欢迎

0 个答案:

没有答案