windows - Windows 上的任务和 -gnatP 开关

标签 windows multitasking ada gnat

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

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

我无法确定的是,此上下文中的“Windows NT”是特指 Windows NT 还是基于 NT 的系统。我对这个主题的搜索结果为空。

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

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

最佳答案

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

我对 GNAT Pro User's Guide 的阅读关于 -gnatP 的是,仅当您需要程序中的“异步中止和异步控制转移”能力时才需要它。 “异步中止”我认为是“abort task”语句,而“asynchonous transfer of control”就是它的本来面目。

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

我个人从未使用过 ATC,只有在我想出更好的方法来实现我想做的事情之前才使用任务中止。

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

关于windows - Windows 上的任务和 -gnatP 开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276152/

相关文章:

C++ DLL 卸载析构函数?

ios - ios 中的后台线程和多任务处理?

file-io - 如何将 Ada.Real_TIme.Time 转换为字符串?

windows - 使用 Github 从 Windows 到 macOS 共享 Unity 项目的问题

c++ - 如何以编程方式查询 Windows 控制面板?

使用 GeoCoordinateWatcher 时出现 Windows Phone 7 性能问题?

ios - 启用多任务手势的 iPad 上的 UIScrollView 问题 (iOS 4.3)

javascript - Nodejs 多线程 Web api

C++ 到 Ada 的指针和异常

Ada : custom type in range 1. .var?