
我的程序启动使用pthreads库为低优先级任务创建一个线程,而不更改cpu关联性设置为核心0的调度策略.然后,父线程使用sched_setscheduler()将其cpu亲和性设置为核心3,并将其自己的调度策略设置为SCHED_FIFO pID为零,优先级为1,然后开始运行非阻塞循环.
该计划本身运行良好.但是,如果我在程序运行时尝试第二次登录服务器,则在我停止程序之前终端没有响应.这就像调度程序试图在与实时进程相同的核心上运行其他进程.
>我错过了什么?
>调度程序是否仍会尝试在运行实时进程的核心上运行其他进程?如果是这样,有没有办法防止这种情况?
>在父级中使用sched_setscheduler()设置调度策略是否会更改之前创建的子级的行为?
提前致谢.
解决方法 sched_setscheduler设置进程的调度程序,而不是线程.看到:http://pubs.opengroup.org/onlinepubs/9699919799/functions/sched_setscheduler.html
如果要为线程设置调度程序,则需要在创建新线程的属性对象上使用pthread_attr_setschedpolicy和pthread_attr_setschedparam函数.
我不确定linux是否符合这些要求,但至少应该首先确保您的代码符合规范,然后根据需要进行调整……
总结以上是内存溢出为你收集整理的实际使用Linux实时调度优先级(SCHED_FIFO和SCHED_RR)?全部内容,希望文章能够帮你解决实际使用Linux实时调度优先级(SCHED_FIFO和SCHED_RR)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)