Ada Tasking and Safety

时间:2015-06-22 11:03:04

标签: thread-safety fork ada2012 spark-ada

我不喜欢编码,但我真的很喜欢Ada,而且我很陌生。那么请你澄清这些要点吗?

如果您的计算机具有单个非线程CPU,任务分配仍将是单CPU。当然,这同样适用于C或C ++中的分叉

问题:你觉得Ada任务在这种情况下提供了分叉的好处吗?

我也想知道为什么SPARK禁止任务(我知道这是为了安全,但是如何明确,如何禁止任务提高安全性。)

我的第三个也是最后一个问题,如果我想提供"安全任务" (在Ada中),我需要设想对任务有哪些限制才能使用它们(任务)"安全"。

谢谢,

1 个答案:

答案 0 :(得分:1)

1)是的。最简单的论点是Ada任务在相同的进程上下文中运行,使得任务/线程比单独的进程更快。语言级别的任务间通信和同步功能是另一个原因。

2)只有某些版本的SPARK禁止任务。 RavenSPARK(2005)允许任务,并允许关于任务的正式推理。任务问题在于很难正式推理,尤其是SPARK团队的雄心壮志(证明是正确的)。

3)您可以考虑将自己限制在Ravenscar档案中。但简单的Ada任务已经相对安全(即使它不能阻止你编写好的死锁)。