Background:我正在致力于将一个Ada项目从VxWorks移植到Linux平台.该项目在很大程度上依赖于Ada动态任务优先级的使用.

我做了几个让我感到困惑的实验.Ada任务优先级似乎不会影响底层的Linux优先级/优美度.两个具有不同优先级的相同任务需要相同的时间才能完成,即使固定在一个CPU核心上也是如此.

Question: Linux上Ada任务的语义是什么?为什么我看不到设置任务优先级的效果?

推荐答案

问:Linux上Ada任务的语义是什么?为什么我看不到设置任务优先级的效果?

第一个问题基本得到了Shark8的回答.我想我应该把我第二个问题的答案贴出来.

Answer:在Linux上使用Ada任务优先级需要使用Linux"实时"调度算法.默认值通常为SCHED_OTHER.pragma Time_Slice (0.0)pragma Task_Dispatching_Policy (FIFO_Within_Priorities)将调度算法设置为SCHED_FIFO.这需要以根用户身份运行应用程序.

注意:我曾try 在运行的进程上使用chrt手动设置SCHED_FIFO,但不起作用.

详情:https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/platform_specific_information.html#index-10

Linux相关问答推荐

如何删除字符串中的`{{i:`and `}}`

如何知道进程组中的所有进程是否都已收集?

为什么在已连接的设备上调用 btmgmt conn-info 返回:状态 0x02(未连接)

ln命令报错target not a directory

sed:用空格替换

中的换行符

递归/详尽地将点插入字符串

将行转换为一条

Linux/Unix 手册页语法约定

如何在 shell 脚本中只读取一个字符

BASEDIR 环境变量未正确定义

安装 mod_ssl 亚马逊 Linux

何时判断 EINTR 并重复函数调用?

yum 可以告诉我哪些存储库提供了特定的包吗?

grep 时间命令输出

exec 系统调用(如 exec 和 execve)系列的功能有什么区别?

在 VIM 中搜索和替换导致尾随字符

自动化 Amazon EBS 快照 任何人在 linux 上都有一个好的脚本或解决方案

Pthread mutex互斥断言错误

Docker Bash 提示不显示 colored颜色 输出

仅使用 proc 获取本地网络接口地址?