Tôi đang cố gắng sử dụng một thread trong lớp, sau đó thread cần sử dụng condition_variable
và biến điều kiện sẽ bị chặn cho đến khi vị từ được thay đổi thành true
. Mã này trông như thế này:C++ condition_variable wait_for predicate trong lớp của tôi, std :: thread <unorolved overloaded type type> lỗi
class myThreadClass{
bool bFlag;
thread t ;
mutex mtx;
condition_variable cv;
bool myPredicate(){
return bFlag;
}
int myThreadFunction(int arg){
while(true){
unique_lock<mutex> lck(mtx);
if(cv.wait_for(lck,std::chrono::milliseconds(3000),myPredicate)) //something wrong?
cout<<"print something...1"<<endl
else
cout<<"print something...2"<<endl
}
}
void createThread(){
t = thread(&myThreadClass::myThreadFunction,this,10);//this is ok
}
} ;
Mã này vào biên soạn ném một lỗi nói:
chưa được giải quyết quá tải loại chức năng trong dòng “wait_for”.
Sau đó, tôi cố gắng sửa đổi nó để:
if(cv.wait_for(lck,std::chrono::milliseconds(3000),&myThreadClass::myPredicate))
Nhưng vẫn còn một lỗi.
'if (cv.wait_for (lck, std :: chrono :: mili giây (3000), [this] {return myPredicate();}))' – ildjarn
Sử dụng vị từ sai. Đó là cách không thể sử dụng biến vị ngữ. –