示例#1
0
文件: Timer.cpp 项目: binki/TSGL
// Sleep the thread until the period has passed
void Timer::sleep() {
    mutexLock sleepLock(sleep_);
    if (last_time < highResClock::now()) {
        last_time = last_time + period_;
    }
    sleepLock.unlock();

    long double nano = std::chrono::duration_cast<duration_d>(last_time - highResClock::now()).count();
    std::this_thread::sleep_for(std::chrono::nanoseconds((long long) (nano * 1000000000)));

//    std::this_thread::sleep_until(last_time);

    time_between_sleeps = std::chrono::duration_cast<duration_d>(highResClock::now() - last_time).count()
        + period_.count();
}
示例#2
0
	void wait() {
		if (_finalized.load() != true) {
			std::unique_lock<std::mutex> sleepLock(_sleepMutex);
			_sleepCondition.wait(sleepLock);
		}
	}