在线程错误 C2064 中:term 的计算结果不为 0 个参数的函数
In Threading error C2064: term does not evaluate to a function taking 0 arguments
我开始写我的第一个线程教程,我正在创建一个单线程生产者和消费者。它尚未完成,同步仍然存在。但它不是编译,我不明白这个错误意味着缺少或错误的参数是什么。下面是我的代码。
#include<iostream>
#include<thread>
#include<sstream>
#include<list>
#include<mutex>
#include<Windows.h>
using namespace std;
#define BUCKET_LEN 5
HANDLE gMutex = NULL;
HANDLE gSemFull = NULL;
HANDLE gSemEmpty = NULL;
class producerConsumer {
long i;
list<wstring> que;
public:
producerConsumer() {
i = 0;
que.clear();
}
void produce();
void consumer();
void startProducerConsumer();
};
void producerConsumer::produce() {
std::wstringstream str;
str << "Producer[" <<"]n";
que.push_back(str.str());
}
void producerConsumer::consumer() {
wstring s = que.front();
cout << "Consumer[" << "]";
wcout << " " << s;
que.pop_front();
}
void producerConsumer::startProducerConsumer() {
std::thread t1(&producerConsumer::produce);
std::thread t2(&producerConsumer::consumer);
t1.joinable() ? t1.join() : 1;
t2.joinable() ? t2.join() : 1;
}
int main()
{
gMutex = CreateMutex(NULL, FALSE, NULL);
if (NULL == gMutex) {
cout << "Failed to create mutexn";
}
else {
cout << "Created Mutexn";
}
producerConsumer p;
p.startProducerConsumer();
if (ReleaseMutex(gMutex)) {
cout << "Failed to release mutexn";
}
else {
cout << "Relested Mutexn";
}
gMutex = NULL;
system("pause");
return 0;
}
非静态成员函数需要一个对象来调用。此对象可以作为第二个参数传递给 std::thread
构造函数(作为指针或引用(:
std::thread t1(&producerConsumer::produce, this);
std::thread t2(&producerConsumer::consumer, this);
相关文章:
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 当从函数参数中的临时值调用复制构造函数时
- 如何从"decltype()"获取函数参数的数量<funtion>?
- 如何将lambda作为模板类的成员函数参数
- 模板参数推导失败,函数参数/参数不匹配
- 如何在C++中将迭代器作为函数参数传递
- 将函数参数"const char*"转换为"std::string_view"是
- C++ 如何将数组值解压缩为函数参数
- 主函数参数的属性
- 具有两个间接寻址运算符 (C++) 的函数参数的用途
- "Warning: Comma within array index expression"但逗号分隔函数参数
- 如何定义在用作函数参数时工作的类模板的转换
- 将函数参数完美转发到函数指针:按值传递呢?
- 为什么我不能将引用作为 std::async 的函数参数传递
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以就地构造一个固定大小的数组作为函数参数?
- 接受模板作为函数参数
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- Arduino 函数参数