【发布时间】:2011-11-23 15:42:41
【问题描述】:
有没有办法在没有调度程序的情况下使用 pthread,因此只有当线程显式让步或在互斥锁/条件上被阻塞时才会发生上下文切换?如果没有,有没有办法最小化调度开销,从而尽可能少地发生强制上下文切换?
问题指的是 POSIX 线程的 Linux gcc/g++ 实现。
【问题讨论】:
-
最小化上下文切换和进程/线程迁移通常是 CPU 调度程序的目标之一。您是否面临特定问题?
-
具体问题是,在我正在开发的应用程序中,有一组线程显式让步,执行任何其他上下文切换确实是多余的。
-
您是否测量过发生的任何上下文切换都会损害您应用的吞吐量?
-
有些人可能会说 sched_yield() 是一个冗余的上下文切换。如果一个线程正在做有用的工作,为什么还要费心让步呢?如果它没有有用的工作要做,它应该被阻止,等待更多有用的工作。
标签: linux multithreading pthreads