pthread在Linux运行,涉及pthread时了解Linux调度

通过讨论另一个问题,见Debugging strange error that depends on the selected scheduler,我遇到了一些关于我的线程安排的问题.我在Linux 2.6.x上运行root权限并使用pthreads在用C/C++编写的时序关键应用程序中执行并行操作.

我会试着给一些简短的,简单的片段来解释我的问题:

在主要的我开始的某个地方做:

struct sched_param sp;

memset(&sp,sizeof(sched_param));

sp.sched_priority = 99;

sched_setscheduler(getpid(),SCHED_RR,&sp);

我理解这是切换我的程序以使用RR-Scheduler的代码,运行在max.优先.

在启动pthread时,我会这样做:

sched_param param;

pthread_attr_setinheritsched(&attr,PTHREAD_EXPLICIT_SCHED);

pthread_attr_getschedparam(&attr,&param);

param.sched_priority = priority;

pthread_attr_setschedpolicy(&attr,SCHED_RR);

pthread_attr_setschedparam(&attr,&param);

我理解这一点,是使用’priority’中给出的优先级将要启动的线程切换到RR-Scheduler的代码.

如果main不会切换调度程序,那是否会等效地工作?

我不明白的是,如果有必要在main中调用该代码? (主要功能除了启动所有功能,然后在键盘输入上阻止之外没有任何作用.)

我在哪里可以找到有关其工作原理的精确文档.我不认为联机帮助页在解释背景方面做得很好.

提前致谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值