Ich möchte z.B. 2 min in einem Thread warten.
Dann kann ich natürlich einfach sleep(2*60); aufrufen.
Aber: Wenn der Anwender VDR beenden will, möchte er ja nicht so lange warten. In diesem Fall soll der sleep sofort beendet werden.
In der Doku zu sleep: "sleep() causes the calling thread to sleep either until the number of real-time seconds specified in seconds have elapsed or until a signal arrives which is not ignored."
Sendet VDR in so einem Fall ein Signal, das sleep nicht ignoriert?
Oder muss ich das so machen:
Code
class cTVScraperWorker: public cThread {
private:
cCondVar waitCondition;
...
}
void cTVScraperWorker::Stop(void) {
waitCondition.Broadcast();
Cancel(10);
}
und dann in der Methode, die warten möchte:
cTVScraperWorker::testMethod() {
// now wait
{
cMutex mutex;
mutex.Lock();
waitCondition.TimedWait(mutex, 1000*2*60);
mutex.Unlock();
}
// now continue work
}
Display More
?
Oder besser ganz anders?