У меня есть (мягкая) система реального времени, которая запрашивает некоторые данные датчика, выполняет некоторую обработку и затем ждет следующего набора данных датчика.Данные датчика считываются в потоке получателя и помещаются в очередь, поэтому основной поток «спит» (посредством мьютекса) до тех пор, пока не поступят новые данные.
Существуют и другие задачи, такие как ведение журнала илинекоторые долгосрочные расчеты в фоновом режиме, чтобы сделать.Они реализованы для запуска в других потоках.
Однако важно, чтобы хотя основной поток обрабатывал данные датчика, он имел наивысший приоритет, что означает, что другие потоки вообще не должны использовать ресурсы ЦП, если это возможно (в настоящее время фоновые потоки вызывают основной поток).замедление потока неприемлемым способом.)
В соответствии с Установка приоритета потока в Linux с Boost есть сомнения, что установка приоритетов потока сделает эту работу.Мне интересно, как я могу измерить, какой эффект установки приоритетов потоков действительно имеет?(Платформа: Angstrom Linux, ARM PC)
Есть ли способ полностью "приостановить" и "продолжить" потоки?
Есть ли в C ++ шаблон, который может реализовать паузу / продолжитьмой собственный?(Возможно, я смогу разбить фоновую работу на маленькие куски, и я мог бы проверять после каждого куска работы, разрешено ли мне продолжать, но вопрос в том, насколько большими должны быть эти куски и т. Д.)
Спасибо затвои мысли!