ich zur Zeit auf einer kleine Wrapper-Klasse arbeitete für Boost-Thread, aber ich nicht wirklich bekommen, wie die Sleep-Funktion funktioniert, das ist, was ich bisher bekommen habe:Was macht boost :: thread sleep()?
BaseThread::BaseThread(){
thread = boost::thread();
bIsActive = true;
}
BaseThread::~BaseThread(){
join();
}
void BaseThread::join(){
thread.join();
}
void BaseThread::sleep(uint32 _msecs){
if(bIsActive)
boost::this_thread::sleep(boost::posix_time::milliseconds(_msecs));
}
Dies ist, wie ich es so weit umgesetzt, aber Ich verstehe nicht wirklich, wie die statische this_thread :: sleep-Methode weiß, welcher Thread zu schlafen ist, wenn zum Beispiel mehrere Instanzen meines Thread-Wrappers aktiv sind. Ist dies der richtige Weg, um es zu implementieren?
Prüfcode wie was? Unterbrechungen scheinen auch ein guter Weg zu sein. – user240137
Was ich mit "check code" meine, ist, dass in dem Code, der von dem gegebenen Thread ausgeführt wird, irgendwo ein "if" ist, das überprüft, ob es geschlafen werden muss und es tun muss, wenn es notwendig ist. Wenn Ihr Thread beispielsweise eine Funktion mit einer großen Schleife ausführt, kann es ausreichend sein, zu prüfen, ob er an jedem Ende der Iteration der Schleife (z. B. durch Überprüfung eines Booleschen Wertes durch Ihren aktuellen Code) schlafen muss. Aber in Ihrem Fall möchten Sie nicht aufdringlich für Ihren Thread-Code sein, sodass Unterbrechungen als eine wirklich bessere Alternative erscheinen. – Klaim