나는 내 응용 프로그램이 정확하게 2000 마이크로 잠을하려면 :정밀 시간 수면
는#include <iostream>
#include <chrono>
#include <thread>
std::cout << "Hello waiter" << std::endl;
std::chrono::microseconds dura(2000);
auto start = std::chrono::system_clock::now();
std::this_thread::sleep_for(dura);
auto end = std::chrono::system_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
std::cout << "Waited for " << elapsed.count() << " microseconds" << std::endl;
이이 차이가 오는가
Waited for 2620 microseconds
결과? 더 나은 (더 정확한) 방법이 있습니까?
감사합니다. cppreference에서 인용
운영 체제에는 스레드를 예약해야하는 시점에 대한 자체 의견이 있으며 절전 시간 최소 * dura ms 만 보장됩니다. – dlf
dlf가 옳다. OS의 세부 사항은 흥미 롭다. 가상 머신에서 테스트를 실행하는 것도 영향을 줄 수 있습니다. –
Busy waiting은 프로세서 리소스를 소모하면서 더 나은 정밀도를 제공 할 수 있습니다. 그것은 무역이다. –