-gnatP(启用异步任务操作的轮询)交换有什么用?
我正在使用GNAT开发一个相当大的游戏项目,并且文档声称Windows NT需要此开关才能允许各种异步任务操作。由于我的项目使用了相当多的任务,我一直在努力确定我是否真的需要这个开关。
我无法确定的是,此上下文中的“Windows NT”是指特定于Windows NT还是基于NT的系统。我对此主题的搜索结果为空白。
这对我来说是个问题,因为包含轮询代码会严重影响我的项目的运行时性能。没有它,一切似乎都能正常工作,但我没有时间进行广泛的测试,而且我仍然害怕我不知道的东西最终会咬我。
总而言之:在Windows系统上仍需要-gnatP才能进行任务分配?如果是这样,有没有办法可以手动调用轮询器,这样我至少可以控制它?
答案 0 :(得分:3)
AdaCore和GNAT公开努力在特定平台上与Ada“做正确的事”。
我对GNAT Pro User's Guide关于-gnatP的阅读是,只有当您需要程序中的“异步中止和异步传输控制”时才需要它。 “异步中止”我认为是“abort task”语句,而“asynchonous transfer of control”就是它。
如果您的程序没有使用这些功能,则不需要-gnatP。
我个人从来没有使用过ATC,只是在我想出一个更好的方法来实现我想做的事情之前就用过任务堕胎。
如果你的代码在没有交换机的情况下运行正常,那么我猜你没有使用这些功能。如果你继续避免它们,你应该没事。