gpt4 book ai didi

ada - pragma Task_Dispatching_Policy(Non_Preemptive_FIFO_Within_Priorities)的用法示例;

转载 作者:行者123 更新时间:2023-12-03 20:38:33 27 4
gpt4 key购买 nike

我有一个大型的、面向任务的程序,我想探索变体调度程序策略。我正在使用 Gnat Ada 2020。特别是,我想使用 pragma 设置任务模型:pragma Task_Dispatching_Policy(Non_Preemptive_FIFO_Within_Priorities);我认为我不太了解实际用法。我了解 pragma 的作用,但我很难正确放置 pragma,至少根据 GNAT 是这样。对于以下小程序中的各种放置组合,我总是收到错误:
“配置编译指示“Task_Dispatching_Policy”的位置不正确
我已经尝试过在整个编译单元之外、在任务类型规范中、在任务主体规范中等等。任何人都可以向我展示这个 pragma 的用法示例吗?谷歌搜索发现了很多讨论,但在源代码中没有实际使用示例。提前致谢。

with Ada.Text_IO; Use Ada.Text_Io;

procedure Test is

Task Type One is
End;

Task Type Two;

Task body One is
Begin
Loop
Put_line("Task one 11111111111111111");
End Loop;
End;

Task body Two is
Begin
Loop
Put_line("Task two 2222222222222222");
End Loop;
End;

a : One;
B : two;
begin
Null;
End;
正如下面所建议的,我在 UG 中找到了一些关于将编译指示放在“gnat.adc”文件中的内容,这似乎生效了,但并没有完全阻止切换,这正是我所期望的。我应该提到我在 Windows 10 环境中。
我认为这是通过@egilhh 的评论来回答的。如果他发布一个我能够接受的内容,我会很高兴接受他的。

最佳答案

I am having difficulty placing the pragma correctly.


专注于正确放置,请注意 Task_Dispatching_Policy pragma 是一个 configuration pragma必须“出现在 compilation_unit 的第一个 compilation 之前”。

at least according to GNAT.


作为@egilhh comments ,GNAT 用户指南在 3.4.1. Handling of Configuration Pragmas 中描述了 tp 如何做到这一点。 :

Configuration pragmas may either appear at the start of a compilation unit, or they can appear in a configuration pragma file to apply to all compilations performed in a given compilation environment.


在单个编译单元的情况下,只需将编译指示放在第一个上下文子句之前,如 here 所示。 :
pragma Task_Dispatching_Policy(…);
with Ada.Text_IO; use Ada.Text_IO;

要更广泛地应用编译指示,请将其添加到 gnat.adc§3.4.2. The Configuration Pragmas Files 中所述.

关于ada - pragma Task_Dispatching_Policy(Non_Preemptive_FIFO_Within_Priorities)的用法示例;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67943882/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com