मैं अपनी कक्षा के भीतर एक थ्रेड का उपयोग करने की कोशिश कर रहा हूं, तो थ्रेड को condition_variable
का उपयोग करने की आवश्यकता है, और स्थिति चर को तब तक अवरुद्ध कर दिया जाएगा एक अनुमान true
में बदला जा सकता है। कोड इस तरह दिखता है:सी ++ condition_variable wait_for मेरी कक्षा में अनुमानित करने के लिए, std :: thread <unlaled overloaded फ़ंक्शन प्रकार> त्रुटि
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))
लेकिन वहां अभी भी एक त्रुटि है।
'if (cv.wait_for (lck, std :: chrono :: मिलीसेकंड (3000), [यह] {मेरा प्राइवेट();} वापस लौटें)) – ildjarn
भविष्यवाणी का उपयोग गलत है। इस तरह भविष्यवाणी का उपयोग नहीं किया जा सकता है। –