我编写了一个简单的C
程序,并像往常一样使用gcc
进行编译。启动时,默认优先级为10
。使用sched_setparam()
API,我将进程的优先级提高到100
。我注意到,当另一个优先级为10
的进程通过MsgSend()
API向第一个进程发送消息时,第一个进程的优先级会回到10
!
我想知道为什么会发生这种情况?在其他posix兼容的操作系统中是否有类似的行为?
请看这个。http://www.qnx.com/developers/docs/6.4.0/neutrino/sys_arch/ipc.html Priority_inheritance_messages
这种行为称为"优先级继承"。这种消息驱动的优先级继承避免了优先级反转问题。