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

 
 
> Динамическое создание/удаление задач
simark1979
сообщение May 8 2018, 06:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094



Всем здравствуйте)

Суть вопроса.
Есть некие потоки которые должны создаваться или удаляться в зависимости от от текущих настроек системы.
Функция, которая должна делать переконфигурацию запущенных задач при сохранении настроек (может вызываться из прерывания кнопки при сохранении настроек)

В этой связи возникло два вопроса, которые я не могу понять.
1. Возможно ли без бубнов узнать по её хэндлу создана ли задача в планировщике и нет? или запоминать в static переменных
2 . Возможно ли создавать/удалять задачи из прерываний или лучше из прерывания нужно семафорить спец задаче, которая этим и займется?


Хотелось бы сделать функцию типа такой (которую можно вызывать из прерываний):

Код
убиваем задача_1  (если она существует)
убиваем задача_2  (если она существует)
убиваем задача_3  (если она существует)
убиваем задача_4  (если она существует)
убиваем задача_5  (если она существует)

switch (настройка)
{
  case 1:
     {
       создать    задача_2;
       создать    задача_3;
     }
  case 2:
     {
       создать    задача_3;
     }
  case 3:
     {
       создать    задача_1;
       создать    задача_2;
       создать    задача_5;
     }
...................
...................
}


И вопрос общего характера, стоит ли так делать? или есть другие идеи? rolleyes.gif

Сообщение отредактировал simark1979 - May 8 2018, 07:38
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vadon
сообщение May 8 2018, 19:16
Сообщение #2


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

Группа: Свой
Сообщений: 97
Регистрация: 27-07-10
Из: харьков
Пользователь №: 58 632



Цитата
Вариант с приостановой для меня не совсем пригоден и дело не в отсучтвии памяти.
Дело в том, что некоторые задачи мне нужно запускать именно заново.
Некоторые потоки такие
{
Включить вывод
Пауза 10
Выключить вывод
Пауза 20
}
А работа потока должна начинаться всегда с включения вывода


Это делается так:

Код
TaskA
{
  for(;;) //вечный цикл
  {
      ждем семафора
      Включить вывод
      Пауза 10
      Выключить вывод
      Пауза 20
  }
}


с любого места программы сигналите семафору и все.
Go to the top of the page
 
+Quote Post



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

 


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


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