У меня есть поток, который в конечном итоге получит данные от датчика каждые 1 мс и выполнит некоторую обработку, которая должна занимать менее 1 мс (скажем, 0,5 мс). На данный момент я хочу смоделировать датчик, используя другой поток. Поэтому моя цель - создать поток, который генерирует данные каждые 1 мс и отправляет их в другой поток. Предположим, что время генерации и отправки незначительно.Выполнение кода каждые 1 миллисекунда
Я пробовал использовать this_thread::sleep_for
, но это не сработало. У меня в основном случайное время сна где-то между 1 мс и 15 мс. Я думаю, что могу использовать chrono::high_resolution_clock
. Но для этого потребуется ожидание.
Любые другие идеи?
Я могу рассчитывать в среднем на 1 мс при условии, что он ни в коем случае не меньше времени обработки.
На какой платформе вы работаете? Разрешение часов (и программный контроль над ним) варьируется между Windows, Linux и т. Д. Это означает, что разрешение 1 мс обычно не может быть надежно обеспечено за пределами операционных систем реального времени. – nephtes
Что сказал @nephtes. Вероятно, вы застряли в оживленном ожидании. – user4581301
Ни в коем случае вы не получите 1 мс сна в системе, отличной от реального времени. – SergeyA