0

变量仅用于 1 个任务,但问题是:它可以被 CALLED 共享吗?

4

1 回答 1

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 意义上没有共享,即被适当地保护以实现一致的并发访问。

即使全局变量实际上只被其中一个任务引用,因此在访问它时不会发生任何并发引发的问题,它仍然不会使变量shared

于 2009-10-19T13:14:50.013 回答