У меня есть программа на языке C, чувствительная ко времени, которая выполняет ввод-вывод через последовательный порт с точностью до микросекунды. На данный момент программа работает хорошо и соответствует нашим требованиям. У меня два вопроса:
Будет ли какое-либо существенное преимущество в переписывании этой программы на Rust, особенно с точки зрения производительности или надежности для таких операций с точным расчетом времени?< /li>
В настоящее время программа записывает данные, считанные из последовательного порта, в файл ASCII. Отдельное приложение Qt запускает эту программу на языке C и отображает текущий размер файла. Теперь нам нужно изменить систему так, чтобы приложение Qt также могло отображать содержимое считываемых данных с периодичностью 1 или 2 секунды. Каким будет наиболее эффективный способ реализовать межпроцессное взаимодействие между программой C и приложением Qt?
Дополнительный контекст:
Целевая ОС — Yocto Linux
Программа C отвечает за сбор данных из последовательного порта.
Требования к времени очень строгие (уровень микросекунд). Это означает, что
Программе необходимо отправлять команды и считывать ответы через очень определенные короткие промежутки времени (измеряемые в миллионных долях). секунду).
Он использует высокоточные функции синхронизации для измерения и контроля этих интервалов.
Код пытается поддерживать согласованное время между операциями, корректируя для любых задержек.
Он использует планирование в реальном времени, чтобы гарантировать, что программа немедленно получит внимание процессора, когда это необходимо.
Система должна оставаться отзывчивой и эффективной.
Я был бы признателен за информацию о потенциальных преимуществах переписывания Rust и рекомендации по реализации новых требований IPC с помощью Qt. Заранее спасибо!
Я еще не пробовал переписывать программу на Rust. Моя текущая программа на языке C работает должным образом, отвечая требованиям точности на уровне микросекунд для связи через последовательный порт.
Что я пробовал:
Реализовано программа на языке C с функциями планирования в реальном времени и высокоточными таймерами.
Используются такие методы, как setpriority() и sched_setscheduler(), для обеспечения выполнения с высоким приоритетом.
Используется clock_gettime() с CLOCK_MONOTONIC_RAW для точного измерения времени.
Используется usleep() для точного контроля времени между операциями.
Чего я ожидаю:
Мне любопытно, сможет ли Rust обеспечить какое-либо улучшение производительности или дополнительную надежность за такое время- чувствительная операция.
Мне интересно, могут ли функции безопасности Rust быть полезными, не жертвуя точным контролем времени, который у меня сейчас есть в C.
Я' Мне интересно узнать, есть ли у Rust какие-либо конкретные преимущества для задач системного программирования, требующих таких жестких ограничений по времени.
У меня есть программа на языке C, чувствительная ко времени, которая выполняет ввод-вывод через последовательный порт с точностью до микросекунды. На данный момент программа работает хорошо и соответствует нашим требованиям. У меня два вопроса: [list] [*]Будет ли какое-либо существенное преимущество в переписывании этой программы на Rust, особенно с точки зрения производительности или надежности для таких операций с точным расчетом времени?< /li> В настоящее время программа записывает данные, считанные из последовательного порта, в файл ASCII. Отдельное приложение Qt запускает эту программу на языке C и отображает текущий размер файла. Теперь нам нужно изменить систему так, чтобы приложение Qt также могло отображать содержимое считываемых данных с периодичностью 1 или 2 секунды. Каким будет наиболее эффективный способ реализовать межпроцессное взаимодействие между программой C и приложением Qt? [/list] Дополнительный контекст:[list] [*]Целевая ОС — Yocto Linux [*]Программа C отвечает за сбор данных из последовательного порта. [*]Требования к времени очень строгие (уровень микросекунд). Это означает, что [/list] [list] [*]Программе необходимо отправлять команды и считывать ответы через очень определенные короткие промежутки времени (измеряемые в миллионных долях). секунду). [*]Он использует высокоточные функции синхронизации для измерения и контроля этих интервалов. [*]Код пытается поддерживать согласованное время между операциями, корректируя для любых задержек. [*]Он использует планирование в реальном времени, чтобы гарантировать, что программа немедленно получит внимание процессора, когда это необходимо. [/list] [list] [*]Система должна оставаться отзывчивой и эффективной. [/list] Я был бы признателен за информацию о потенциальных преимуществах переписывания Rust и рекомендации по реализации новых требований IPC с помощью Qt. Заранее спасибо! Я еще не пробовал переписывать программу на Rust. Моя текущая программа на языке C работает должным образом, отвечая требованиям точности на уровне микросекунд для связи через последовательный порт. Что я пробовал: [list] [*]Реализовано программа на языке C с функциями планирования в реальном времени и высокоточными таймерами. [*]Используются такие методы, как setpriority() и sched_setscheduler(), для обеспечения выполнения с высоким приоритетом. [*]Используется clock_gettime() с CLOCK_MONOTONIC_RAW для точного измерения времени. [*]Используется usleep() для точного контроля времени между операциями. [/list]Чего я ожидаю: [list] [*]Мне любопытно, сможет ли Rust обеспечить какое-либо улучшение производительности или дополнительную надежность за такое время- чувствительная операция. [*]Мне интересно, могут ли функции безопасности Rust быть полезными, не жертвуя точным контролем времени, который у меня сейчас есть в C. [*]Я' Мне интересно узнать, есть ли у Rust какие-либо конкретные преимущества для задач системного программирования, требующих таких жестких ограничений по времени. [/list]