Подтвердить что ты не робот

Что делает 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 знает, какой поток спать, если, например, несколько экземпляров моей обертки потоков. Правильно ли это реализовать?

4b9b3361

Ответ 1

boost:: this_thread:: sleep будет сбрасывать текущий поток. Только сам поток может заснуть. Если вы хотите сделать поток поспать, добавьте контрольный код в поток или использовать прерывания.

UPDATE: если вы используете компилятор С++ 11 с обновленной стандартной библиотекой, у вас будет доступ к std:: this_thread:: sleep_for и std:: this_thread:: sleep_until. Однако нет стандартного механизма прерывания.

Ответ 2

sleep всегда влияет на текущий поток (тот, который вызывает метод).