1

-gnatP(为异步任务操作启用轮询)开关有什么作用?

我正在使用 GNAT 开发一个相当大的游戏项目,文档声称 Windows NT 需要此开关以允许各种异步任务操作。由于我的项目使用了很多任务,我一直在尝试确定我是否真的需要这个开关。

我无法确定的是,在这种情况下,“Windows NT”是专门指 Windows NT 还是基于 NT 的系统。我在这个主题上的搜索变成了空白。

这对我来说是个令人担忧的问题,因为包含轮询代码会对我的项目的运行时性能产生严重影响。没有它,一切似乎都可以正常工作,但是我没有时间进行广泛的测试,而且我仍然害怕我不知道的东西最终会咬我。

所以总结一下:在 Windows 系统上执行任务仍然需要 -gnatP 吗?如果是这样,有没有一种方法可以手动调用轮询器,以便我至少可以对其进行一些控制?

4

1 回答 1

3

AdaCore 和 GNAT 公开努力在特定平台上与 Ada 一起“做正确的事”。

我对有关 -gnatP 的GNAT Pro 用户指南的阅读是,仅当您需要程序中的“异步中止和异步控制转移”能力时才需要它。一个“异步中止”我认为是一个“中止任务”语句,而“异步控制转移”就是它的本质。

如果您的程序没有使用这些功能中的任何一个,则不需要 -gnatP。

我个人从未使用过 ATC,并且仅在找到更好的方法来实现我想要做的事情之前才使用任务中止。

如果到目前为止您的代码在没有开关的情况下运行良好,那么我猜您没有使用这些功能中的任何一个。如果你继续避免它们,你应该没问题。

于 2013-03-07T16:35:26.563 回答