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

 
 
> sleep блоирует поток, Регулярно намертво блокируется один из потоков, где используется sleep
BAT
сообщение May 14 2018, 15:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 22-12-05
Пользователь №: 12 556



Приветствую всех.

В проекте регулярно застывает задача при входе в sleep. Т.е. она бежит некоторое время, а потом перестает выходить из слипа одного из потоков.
При этом Timeout потока висит в нуле. Если его в отладчике снова выставить на какое-либо число, то поток отмерзает и снова работает некоторое время.
Стека там достаточно. Время на выполнение потока точно есть (все сидит в IDLE).

CPU stm32h7. За основу взят порт для stm32F3 для IAR + порт для stm32f4 FPU для GCC

Грешу на кэши, но оно работало вполне успешно на stm32F7, где это тоже присутствует.

Есть подозрение, что встал на те же грабли, но не могу их разглядеть. Может кто сможет поделиться идеей, куда покопать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BAT
сообщение May 16 2018, 10:15
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 22-12-05
Пользователь №: 12 556



Сомневаюсь, что это проблема самой оси. Скорее в привязке к конкретному железу.
Либо какие-то некорректные действия в других потоках.

Код такой

for(;;)
{
coder.process();
OS::sleep(10);
}
внутри coder.process() есть такая конструкция с OS::TEventFlag Ready;
if(Ready.wait(10))
{
...
}
Одно ожидание лишнее, наскоро лепил из разных кусков, чтоб быстрее запустить.
Но, в теории, не должно было тормозиться.
Сейчас sleep убрал, не застревает.

Go to the top of the page
 
+Quote Post
dxp
сообщение May 16 2018, 10:34
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(BAT @ May 16 2018, 17:15) *
for(;;)
{
coder.process();
OS::sleep(10);
}
внутри coder.process() есть такая конструкция с OS::TEventFlag Ready;
if(Ready.wait(10))
{
...
}
Одно ожидание лишнее, наскоро лепил из разных кусков, чтоб быстрее запустить.
Но, в теории, не должно было тормозиться.

Да, ничего криминального нет, просто ещё одно безусловное ожидание.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:53
Рейтинг@Mail.ru


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