变量仅用于1个任务,但问题是:它可以被CALLED共享吗?
答案 0 :(得分: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意义上不是共享,而是为了一致的并发访问而受到适当保护。
即使全局变量实际上只被其中一个任务引用,因此在访问它时不会发生任何并发启动的问题,它仍然不会使变量共享