【问题标题】:pthread scheduling methods?pthread调度方法?
【发布时间】:2010-01-15 03:35:45
【问题描述】:

在没有显式调度的情况下,pthread 被内核以随机方式调度运行。

在 pthread 库中是否有针对优先级等相同的调度方法定义?

【问题讨论】:

    标签: pthreads unix


    【解决方案1】:

    线程的优先级被指定为添加到进程优先级的增量。更改进程的优先级会影响该进程中所有线程的优先级。线程的默认优先级是 DEFAULT_PRIO_NP,与进程优先级没有任何变化。

    这些 Pthread API 仅支持 SCHED_OTHER 调度策略。

    1. pthread_setschedparam(仅支持 SCHED_OTHER)
    2. pthread_getschedparam
    3. pthread_attr_setschedparam
    4. pthread_attr_getschedparam

    一个 AS/400 线程与系统中的其他线程竞争调度资源,而不仅仅是与进程中的其他线程竞争。调度器是基于多个延迟成本曲线(优先级范围)的延迟成本调度器。 Posix 标准和 Single Unix Specification 将此称为调度范围和调度策略,在此实现上不能从默认的 SCHED_OTHER 更改。

    【讨论】:

      【解决方案2】:

      可以稍微控制一下。对于具有相同优先级的线程,pthreads 标准指定了 FIFO(线程运行直到它阻塞或退出)、Round Robin(线程运行固定时间)或默认的“Other”的选择。标准要求的唯一一个是“其他”,其行为取决于实现,但通常是 FIFO 和循环的组合(例如,线程运行直到它阻塞、退出或时间片用完,以先发生者为准)。

      【讨论】:

        猜你喜欢
        • 2011-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-26
        相关资源
        最近更新 更多