【发布时间】:2013-03-02 16:48:42
【问题描述】:
对线程和并发完全陌生,但我正在尝试将函数作为新线程启动,但我不明白我的错误。我收到一条类似于Candidate expects X arguments, 2 provided 的错误。 0 < X <= 9 重复此错误(2 除外)。但是,在我看到的每个示例中,它就像放置您的函数及其参数一样简单。我的代码如下:
培训师.cpp:
int time = 5; // for example
void Member::decrement(int seconds){
while(seconds > 0){
seconds--;
Sleep(1000);
}
isBusy = false;
}
void Member::startDecrement(string state){
if (state == "busy"){ // isBusy is a private boolean, hence this
isBusy = true;
thread myThread = thread(decrement, time); // Thread for method
myThread.join();
else {
isBusy = false;
}
}
但这不起作用?有人可以给我指导吗,我想做的很简单,但到目前为止我还没有找到适合我的方法。 thread 的替代品也很受欢迎,我已经看到 std::async 是一个选项,但它似乎不适用于我的编译器设置。
设置信息:-sdt=c++11、MinGW、Win64、GCC 4.7.2
编辑:
看到我因错误而被钉死,here is the entire error log。
我也试过答案中提供的代码,没有运气。
【问题讨论】:
-
如果您包含一个最小但完整的示例并包含实际的错误消息而不是其近似值,您可能会得到更好的答案。
-
难道你的参数
time实际上是指标准的time()函数吗?如果重命名time变量会怎样? -
@NPE 这是一个最小但完整的示例,因为这就是导致错误的原因。
-
@Zackehh9lives:查看您的最小示例工作here
-
@Zackehh9lives 您正在查看的成员函数示例是
decrementTime吗?您遇到问题的事实表明您不了解某些内容(这是完全正常的!!),但这就是为什么我们需要一个 complete 示例,因为有时我们只是不理解知道我们遗漏了什么。
标签: c++ multithreading c++11 mingw boost-thread