这是我正在进行的任务,不,我不是在找你给我答案。我只需要有人指出我正确的方向,也许需要一行或两行示例代码。
我需要弄清楚如何在我的程序中设置文件读取操作的优先级。要点:
我能想到的唯一方法(现在,无论如何)将是每次创建消息时递增计数器,并在计数器达到该进程指定优先级的给定值后执行类似sched_yield的操作。这很可能是一种可怕的,可怕的方法,但这是我现在所能想到的。分配更多地是关于消息队列而不是其他任何东西,但我们仍然必须具有数据传输优先权。
感谢任何帮助/指导:)
答案 0 :(得分:6)
让子进程池共享一个信号量。一旦孩子获得了信号量,它就可以从资源中读取预定义的字节数并将其返回给客户端。读取的字节数可以与请求的优先级相关。一旦进程读取了预定义的字节数,就释放信号量。
答案 1 :(得分:2)
直到最近,Linux中还没有IO优先级。现在有ionice
。但我怀疑你是否打算在你的任务中使用它。
答案 2 :(得分:1)
您确定您的作业是在讨论文件而不是系统V消息队列吗?
阅读手册:
msgctl(2), msgget(2), msgrcv(2), msgsnd(2), capabilities(7),
mq_overview(7), svipc(7)
虽然我认为您可以使用文件作为密钥来创建消息队列,以便多个进程可以通过消息队列进行集合,但Sys V消息队列本身不是文件。
只是想知道,因为你具体提到“消息队列”,并谈论“优先级”,可能可以想象映射到例如的msgtyp字段。 msgsnd和msgrcv,虽然很难说你已经给出了什么信息,但是作业的真正含义是什么。