Сейчас я работаю на небольшой класс-оболочку для повышающего нить, но я действительно не понимаю, как работает функция сна, это то, что у меня до сих пор:Что делает 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 знает, какой поток спать, если, например, несколько экземпляров моей обертки потока активны. Правильно ли это реализовать?
контрольный код как какой? перерывы, похоже, тоже хорошие. – user240137
Что я имею в виду под «кодом проверки», так это то, что в коде, выполняемом данным потоком, где-то есть «if», который проверяет, нужно ли ему спать и делать это, если это необходимо. Например, если ваш поток выполняет функцию с большим циклом, то проверка того, нужно ли ему спать (путем проверки булевского набора вашим текущим кодом, например) на каждом конце итерации цикла, может быть достаточно. Но в вашем случае вы не хотите навязывать свой код потока, поэтому перерывы кажутся действительно лучшей альтернативой. – Klaim