线程构造函数语法 - 通过引用传递类成员

时间:2015-08-20 05:37:32

标签: c++ multithreading visual-studio c++11 compiler-errors

我一直在尝试使用类成员构造一个线程。我无法确定为什么编译器(VS2015)会继续抱怨 我有一个有两个成员函数的类。 Load(...)通过引用接受参数并且是公共的。 ProcessQ(...)是私有的,通过引用获取参数。 ProcessQ被传递给线程。但我一直收到错误

构造函数中的

“unknown-type std :: invoke(_Callable&&,_ Types&& ...)

主题(& FileProcessor :: ProcessQ,ref(fileQ),ref(fpQ),文件夹);

似乎我错过了线程的构造函数语法?

typedef vector<string> FPTemplate;
class FileProcessor
    {
    public:
        void Load(string folder, concurrent_queue<string>& fileQ, concurrent_queue<FPTemplate>& fpQ);
    private:
        void ProcessQ(concurrent_queue<string> &fileQ, concurrent_queue<FPTemplate> &fpQ, string folder);
    };

这是我的Load(...)函数

void FileProcessor::Load(string folder,concurrent_queue<string>& fileQ, concurrent_queue<FPTemplate>& fpQ)
        {
            // Create threads and exectue
            const short nThreads = 8;
            thread fileProcessorThreads[nThreads];

            for (short i = 0; i < nThreads; i++)
            {
                fileProcessorThreads[i] = thread(&FileProcessor::ProcessQ, ref(fileQ), ref(fpQ), folder);
            }
            for (auto& th : fileProcessorThreads) 
            {
                th.join();
            }
        }   

0 个答案:

没有答案