Что действительно повышает:: распараллельте сон (), делают?

Я в настоящее время работаю над маленьким классом обертки для потока повышения, но я действительно не добираюсь, как работы функции сна, это - то, что я имею до сих пор:

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

12
задан Harald Scheirich 7 January 2013 в 13:44
поделиться

2 ответа

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

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

.
17
ответ дан 2 December 2019 в 18:54
поделиться

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

.
2
ответ дан 2 December 2019 в 18:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: