ОКНА CPP: есть ли функция сна в микросекундах? - PullRequest
4 голосов
/ 02 февраля 2012

Я знаю, что это в течение миллисекунд (Сон (милли))

, но я не мог найти один для микро ..

Ответы [ 4 ]

1 голос
/ 02 февраля 2012

Предварительный просмотр VS 11 dev включает часть стандартной библиотеки, имеющую дело с потоками. Так что теперь вы можете сказать:

std::this_thread::sleep_for(std::chrono::microseconds(1));

Конечно, это не означает, что поток будет активирован точно через это время, но он должен быть настолько близок, насколько позволяет платформа (и реализация библиотеки). Как отмечалось в других комментариях, Windows на самом деле не позволяет потокам бездействовать так долго.

1 голос
/ 02 февраля 2012

Вы можете использовать rdtsc инструкцию или QueryPerformanceCounter функцию Windows API для получения счетчиков с высоким разрешением. Затем вы можете откалибровать их, например, с помощью GetTickCount или функций времени.

0 голосов
/ 13 июля 2012

Я только что написал подробный комментарий о функции sleep () и вращении счетчика производительности.Чтобы не вводить его здесь снова, вот ссылка:

c ++, usleep () устарел, обходные пути для Windows / MingW?

0 голосов
/ 02 февраля 2012

Windows не может спать менее миллисекунды.Временные интервалы имеют тенденцию быть намного больше, чем 1 мс, поэтому на самом деле это невозможно даже для потока с наивысшим приоритетом.

Если вам не нужно записывать ЦП, вы можете вращаться до QueryPerformanceCounter прошло ваше время.

...