【问题标题】:setting thread priorities in C在 C 中设置线程优先级
【发布时间】:2014-11-29 19:56:42
【问题描述】:

我如何知道 C 中的线程是“正在运行”、“可运行”、“阻塞”还是“终止”。我确实知道 Java 中存在这样的函数,但在 C 中找不到它们......

另外,我需要具有多个优先级的多个线程,我确实使用了 pthread_attr_setschedparam,具有 SCHED_RR 策略和 EXPLICIT 继承,但它确实有效好像没用?

有什么建议我哪里出错了吗?

提前致谢

【问题讨论】:

  • 请访问描述How to Ask a Question的链接。提供必要的详细信息,包括您的代码和相关错误(如果有),将允许这里的每个人帮助您解决问题。
  • @David 我看不出这个问题缺少什么。问题很清楚,并且提供了答案的所有要求。你缺少什么? OP询问如何查询某些信息,为什么需要代码?
  • 嘿,我能知道怎么做吗?
  • 您是否使用pthread_attr_init 初始化了您的pthread_attr_t 变量?
  • 是的,我使用 pthread_attr_init() 对其进行了初始化

标签: c linux multithreading posix


【解决方案1】:

我会告诉你为你的线程分配调度策略必须遵循的顺序。

1) 首先创建pthread_attr_t attr 变量。

2) 初始化它 - pthread_attr_init(&attr)

3) 设置显式继承:pthread_attr_setinheritsched(&attr,PTHREAD_EXPLICIT_SCHED);

4) 然后使用pthread_attr_setschedpolicy(&attr,SCHED_RR); 设置您的调度策略

5) 最后创建你的线程pthread_create(&THREAD_NAME, &attr, FN_NAME, ARGS);

您可以使用此attr 变量通过SCHED_RR 策略创建任意数量的线程。

现在您如何检查是否设置了所需的策略?您必须使用pthread_attr_getschedpolicy 功能。参考 MAN 页面了解如何使用它http://linux.die.net/man/3/pthread_attr_getschedpolicy

不应使用pthread_attr_setschedparam 为线程设置SCHED_RR 策略。此函数用于为您的线程分配优先级。详情请参考http://linux.die.net/man/3/pthread_attr_setschedparam

【讨论】:

    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多