Как я могу заморозить задачу?
Я имею в виду, если у меня есть задача
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 (т. Е. Задача будет не будет фактически заморожен, потому что внутренний цикл будет запущен).