有时我们需要在一个包中定义一些公用的数据,可以被几个独立的程序共享使用 . 在不使用编译指令Shared_Passive之前这是很难直接办到的,将不得不使用文件手段或数据库手段来实现共享功能。使用Shared_Passive共享指令后可以实现这个目的。上代码。
-- 共享包
package Com is
pragma Shared_Passive;
type ints is array (Natural range<>) of Integer;
I100:ints(1..100);
end Com;
-- 测试代码1:写入数据
with com;
procedure ComTest1 is
begin
for i in 1..100 loop
com.I100(i):=i+100;
end loop;
delay(100.0);
end ComTest1;
-- 测试代码2:读取数据
with com;
with Ada.Text_IO;
procedure ComTest2 is
begin
for i in 1..100 loop
Ada.Text_IO.Put_Line(COM.I100(i)'Img);
end loop;
delay(150.0);
end ComTest2;
我们首次运行测试程序1,写入数据后,会在程序所在目录下产生一个Com.I100的文件。如果测试程序1首次运行且未结束运行时,运行测试程序2会阀先最后一个数据并未写入完成。如果程序1未结束运行,再运行一次程序1(2个通用的例程运行)则读取立即会变得正常。