阿达。如何在ravenscar实时配置文件中实例化多达1000个通用包

时间:2016-04-05 16:29:36

标签: generics ada

我有一个通用包,其中包含使用Ravenscar pragma profile封装的缓冲区功能。

此缓冲区还具有用于多任务处理的受保护过程和条目。

我需要实例化其中的几个包。代码现在以这种方式工作:

  

package buffer1是新缓冲区(configuration_1);

     

package buffer2是新缓冲区(configuration_2);

     

.....

     

package buffer1000是新缓冲区(configuration_1000);

问题是我可能需要多达500或1000个独立的缓冲包,所以我试图想出另一种方法来实例化这些通用包,然后填充500或1000行这些实例。

为了使事情变得更加困难,Ravenscar pragma profile要求我在编译时确定一切都是可行的。

我当时希望做一些类似于#34;约束的泛型包数组"但我不知道如何用这种语言来管理这种情况。

有人知道更好地处理他的问题吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

假设您正在使用GNAT编译器,则可以使用Gnat.Bounded_Buffers。它是一个线程安全的通用缓冲区实现,运行良好。我曾经有一个喜欢编写自己的实现的同事,但抽象通常是非常有限的而且相当脆弱。这个Gnat.Bounded_Buffers应该对你有用。如果您需要帮助实施它,请告诉我。