我有一个通用包,其中包含使用Ravenscar pragma profile封装的缓冲区功能。
此缓冲区还具有用于多任务处理的受保护过程和条目。
我需要实例化其中的几个包。代码现在以这种方式工作:
package buffer1是新缓冲区(configuration_1);
package buffer2是新缓冲区(configuration_2);
.....
package buffer1000是新缓冲区(configuration_1000);
问题是我可能需要多达500或1000个独立的缓冲包,所以我试图想出另一种方法来实例化这些通用包,然后填充500或1000行这些实例。
为了使事情变得更加困难,Ravenscar pragma profile要求我在编译时确定一切都是可行的。
我当时希望做一些类似于#34;约束的泛型包数组"但我不知道如何用这种语言来管理这种情况。
有人知道更好地处理他的问题吗? 提前致谢
答案 0 :(得分:0)
假设您正在使用GNAT编译器,则可以使用Gnat.Bounded_Buffers
。它是一个线程安全的通用缓冲区实现,运行良好。我曾经有一个喜欢编写自己的实现的同事,但抽象通常是非常有限的而且相当脆弱。这个Gnat.Bounded_Buffers
应该对你有用。如果您需要帮助实施它,请告诉我。