我一直在尝试使用类成员构造一个线程。我无法确定为什么编译器(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();
}
}