我不喜欢编码,但我真的很喜欢Ada,而且我很陌生。那么请你澄清这些要点吗?
如果您的计算机具有单个非线程CPU,任务分配仍将是单CPU。当然,这同样适用于C或C ++中的分叉。
问题:你觉得Ada任务在这种情况下提供了分叉的好处吗?
我也想知道为什么SPARK禁止任务(我知道这是为了安全,但是如何明确,如何禁止任务提高安全性。)
我的第三个也是最后一个问题,如果我想提供"安全任务" (在Ada中),我需要设想对任务有哪些限制才能使用它们(任务)"安全"。
谢谢,
答案 0 :(得分:1)
1)是的。最简单的论点是Ada任务在相同的进程上下文中运行,使得任务/线程比单独的进程更快。语言级别的任务间通信和同步功能是另一个原因。
2)只有某些版本的SPARK禁止任务。 RavenSPARK(2005)允许任务,并允许关于任务的正式推理。任务问题在于很难正式推理,尤其是SPARK团队的雄心壮志(证明是正确的)。
3)您可以考虑将自己限制在Ravenscar档案中。但简单的Ada任务已经相对安全(即使它不能阻止你编写好的死锁)。