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