1

我正在使用 sched.h 玩 linux 调度并遇到一些问题。

据我所知,Linux 调度程序在调度时不会区别对待线程和进程。线程就像共享公共资源的进程。

好的,假设我有 Process-A,它设置为 CPU 核心 0 并且设置了 SCHED_FIFO 属性;它将一直运行,直到另一个更高优先级的任务启动。如果 Process-A 创建一个新线程,该线程会继承相同的属性吗?(即使用 SCHED_FIFO 属性绑定到 CPU 0 还是默认?)

谢谢!

4

1 回答 1

4

实际上,您可以使用一个简单的程序进行测试,但可以通过各种手册页进行测试:

sched_setaffinity

通过 fork(2) 创建的子代继承其父代的 CPU 关联掩码。关联掩码在 execve(2) 中保留。

pthread_create

新线程继承调用线程的功能集(请参阅功能(7))和 CPU 亲和掩码(请参阅 sched_setaffinity(2))的副本。

sched_setscheduler

子进程通过 fork(2) 继承调度策略和参数。调度策略和参数在 execve(2) 中保留。

于 2012-10-25T10:21:42.563 回答