Как добиться блокировки потоков в CAPL - PullRequest
0 голосов
/ 25 октября 2018

Теперь я сталкиваюсь с проблемой с CAPL:

  1. У меня есть сообщение CAN с циклом 10 мс
  2. Когда я получаю это сообщение, у меня есть действие, которое может стоить более 20 мсчто нужно сделать

Так есть ли способ заблокировать поток "on message xxx" в CAPL?

Спасибо!

1 Ответ

0 голосов
/ 25 октября 2018

Нет, нет возможности отключить этот поток.Я бы порекомендовал вам обработать условие if в вашем сообщении xxx {}.

on message 10msMessage
{
  if (20msTask_Free) 
   {
    20msTask_Free=0;
    20msTask();
   }
}

Кроме того, вам нужно где-то установить 20msTaks_Free = 1, когда вы будете чувствовать себя в безопасности, чтобы обработать его снова (не знаю, в конце 20msTask ()).

Конечно, мойРешением проблемы является то, что вы не можете выполнить на каждое сообщение 10 мс задание 20 мс.Но это говорит само за себя, и я запомнил из вашего описания, что вам не нужна эта тема все время.

...