Замораживание задачи Ada

Как я могу заморозить задачу?

Я имею в виду, если у меня есть задача

task body My_Task is
begin 
  accept Start;
  loop
    Put ("1");
    Put ("2");
    Put ("3");
    ...
    Put ("n");
  end loop;
end My_Task;

, есть ли способ «заморозить» задачу в ее текущем состоянии? Если, например, выполнение завершилось выполнением Put ("2"); , как я могу его заморозить, а затем повернуть, чтобы продолжить? Я хочу вызвать замораживание извне задачи, а также извне, чтобы она продолжалась.

Обновление

Я мог бы наверняка реализовать его, если бы у меня была спецификация вроде

type State_Type is
  (RUN,
   FROZEN);

task type My_Task (State : State_Type) is
   entry Start;
end My_Task;

тело

task body My_Task is
begin 
  accept Start;
  loop
    Put ("1");
    Put ("2");
    Put ("3");
    ...
    Put ("n");

    loop 
     if State = RUN then exit; end if;
    end loop;
  end loop;
end My_Task;

, но это было бы не так, потому что мне пришлось ждать n-й строки инструкции Put (т. Е. Задача будет не будет фактически заморожен, потому что внутренний цикл будет запущен).

6
задан Rego 17 November 2011 в 15:34
поделиться