реклама на сайте
подробности

 
 
> Не вытесняется поток
AlexMatyu
сообщение May 28 2018, 10:59
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 14-10-15
Пользователь №: 88 851



На неком девайсе основанном на процессоре ARM DM3730, работает операционная система Linux (без патчей rt) и моё приложение. В рамках этого приложения множество потоков (планировщик SCHED_RR), основных три:
- поток 1: забор данных с устройства (максимальный приоритет);
- поток 2: подготовки данных (нормальный приоритет);
- поток 3: обработки данных (низкий приоритет);

в последнем потоке происходит вызов из сторонеей библиотеки fftw3.h. при этом, когда данных много и происходит вызов обработки этих данных из сторонней библиотеки, поток 3 захватывает ядро на огромный отрезок времени (~550мс) и не вытесняется. Из-за этого первый поток (самый критичный), не успевает забрать данные, что для меня очень критично.

Помогите с методами решения данной проблемы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Enthusiast
сообщение Jun 24 2018, 10:40
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 25-09-09
Из: Nizhny Novgorod, Russia
Пользователь №: 52 588



Обычно я всегда ставлю части кода, чувствительные к времени вызова, в обработчик интервального таймера. Суть подхода в том, что во время срабатывания обработчика таймера на заданное время выполняется только код, вложенный в этот обработчик, а все остальные потоки стоят и ждут. Подробнее почитать об интервальном таймере (8.13 setitimer: Setting Interval Timers) можно тут: "Advanced Linux programming".
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 10:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016