Несколько потоков реального времени, вызывающих узкие места в соединении udp-сокета - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть приложение, которое в настоящее время использует три потока, все они настроены для планирования в реальном времени, для получения данных через соединение через сокет udp.Я использую три потока, чтобы попытаться ускорить конвейер данных, то есть один опрашивает данные и извлекает их из буфера recv, другой копирует данные в очередь, а другой записывает в файл.

Будет ли наличие нескольких потоков реального времени вызывать проблемы в соединении udp, например, если поток, пытающийся копировать данные, вступает в конфликт с потоком, пытающимся получить данные из буфера?

1 Ответ

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

Да, повышение приоритета потока в реальном времени кажется плохой идеей, см. этот пост для некоторых деталей.

Рассматривали ли вы противоположный подход?Имейте две или более копии одного и того же потока, делая операции чтения и копирования.Теперь синхронизируйте их так, чтобы, как только первый поток завершил чтение и начал копировать данные в очередь, второй поток уже начинает чтение.Сохранение данных из очереди в файл, вероятно, лучше всего выполнять в одном потоке (если у вас несколько дисков и т. Д.).

...