클래스 내에서 스레드를 사용하려고 시도하면 스레드가 condition_variable
을 사용해야하며 조건 변수는 술어는 true
으로 변경됩니다. 코드는 다음과 같습니다 컴파일에내 클래스의 조건부 변수 대기열 조건 :: std :: thread <unresolved overloaded function type> 오류
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
}
} ;
이 코드라는 오류가 발생합니다 : 라인 "wait_for"에
해결되지 않은 오버로드 된 함수 타입을.
그때 나는 그것을 수정하려고 :
if(cv.wait_for(lck,std::chrono::milliseconds(3000),&myThreadClass::myPredicate))
하지만 오류가 여전히 존재한다.
'(cv.wait_for (lck, std :: chrono :: milliseconds (3000), [this] {return myPredicate();}))' – ildjarn
술어 사용이 잘못되었습니다. 그것은 술어를 사용할 수없는 방법입니다. –