Может ли переменная, которая объявлена в том же теле процедуры, где находятся задачи, рассматриваться как общая для этих задач?
-
22-09-2019 - |
Вопрос
Переменная используется только в 1 задаче, но вопрос в том,:можно ли это назвать общим?
Решение
Я предполагаю, что вы говорите о структуре кода, что-то вроде этого:
procedure A_Procedure_Body is
task T1 is
entry T1_E1;
end T1;
task T2 is
entry T2_E1;
end T2;
Some_Variable : Integer;
task body T1 is
T1_Local : Integer;
begin
T1_Local := Some_Variable;
...
end T1;
task body T2 is
T2_Local : Integer := 42;
begin
Some_Variable := T2_Local;
...
end T2;
begin
null;
end A_Procedure_Body;
В этом случае "Some_Variable" - это глобальный для обеих задач, но не общий доступ в смысле Ada быть должным образом защищенным для согласованного параллельного доступа.
Даже если на глобальную переменную фактически ссылается только одна из задач, и поэтому при обращении к ней нет никаких шансов возникновения проблем, вызванных параллелизмом, она все равно не создает переменную общий доступ.
Не связан с StackOverflow