Что делает 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));
}
Вот как я его реализовал до сих пор, но я действительно не понимаю, как статический метод this_thread:: sleep знает, какой поток спать, если, например, несколько экземпляров моей обертки потоков. Правильно ли это реализовать?
Ответы
Ответ 1
boost:: this_thread:: sleep будет сбрасывать текущий поток. Только сам поток может заснуть. Если вы хотите сделать поток поспать, добавьте контрольный код в поток или использовать прерывания.
UPDATE: если вы используете компилятор С++ 11 с обновленной стандартной библиотекой, у вас будет доступ к std:: this_thread:: sleep_for и std:: this_thread:: sleep_until. Однако нет стандартного механизма прерывания.
Ответ 2
sleep всегда влияет на текущий поток (тот, который вызывает метод).