对线程和并发完全陌生,但我试图将一个函数作为一个新线程启动,但我不明白我的错误。我收到一个错误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
编辑:
看到我因错误而被钉死,这是整个错误日志。
我也试过答案中提供的代码,没有运气。