Добрый день! Есть небольшой проект в котором я работаю с устройствами: спектр анализатор и контроллер управления.
Связь со спектром анализатором обеспечиваются при помощи usb, и есть библиотека для работы с ней. Со спектра необходимо получать данные меньше или равно 1 мс. В программе для получения с него данных, я создаю поток с высоким приоритетом в котором запрашиваю данные. Т.к. в windows я не нашел временной задержки меньше чем одной миллисекунды, то считываю данные в потоке без задержки времени, примерное время получения данных, 600-700 микросекунд. Загрузка процессора 50-60%, процессор двух-ядерный, core 2 duo c частотой 3ГГц.
Связь с контроллером устройств обеспечивается при помощи ethernet, udp протокол, пакеты шлются примерно раз в 1 мс. Мне необходимо получать эти сообщения
с равным интервалом по времени, в программе я тоже как и со спектром анализатором получаю пакеты в отдельном потоке, указав высокий приоритет. Если я работаю только с контроллером устройств, то получаю данные примерно раз в миллисекунду, а когда включаю еще и спектр анализатор, то данные с контроллера устройств получаю с неравными промежутками примерно так: 1 мс 1мс 1мс 0.5мс 0.5мс 0.5 мс 3 мс 1 мс 1мс, это только для сравнения. Вопрос как можно добиться того чтобы получать данные с контроллера устройств с одинаковым периодом времени? Контроллер устройств шлет стабильно данные раз в 1 мс, по снифферу тоже данные приходят равномерно через 1 мс, размер пакета маленький, так что все приходит. Еще вопрос, когда создаешь потоки в Qt, как узнать, к каким ядрам они принадлежат? Я так понимаю что windows потоки распределяет между ядрами планировщик задач, есть ли в Qt такое, чтобы можно было привязать потоки к определенным ядрам? Буду очень рад, если кто нибудь выскажет свои мнения по поводу сложившейся ситуации.