一尘不染

防止Linux线程被调度程序中断

linux

您如何告诉Linux中的线程调度程序不因任何原因中断您的线程?我正在用户模式下编程。简单地锁定互斥锁是否可以完成此操作?我想防止执行某些功能时调度进程中的其他线程。它们会阻塞,我会用上下文切换浪费CPU周期。我希望任何执行该功能的线程都能够完成执行而不会中断,即使超出了线程的时间片。


阅读 612

收藏
2020-06-02

共1个答案

一尘不染

您如何告诉Linux中的线程调度程序不因任何原因中断您的线程?

无法真正完成,您需要一个实时系统。在Linux上完成的事情是将调度策略设置为实时调度程序,例如SCHED_FIFO,并设置PTHREAD_EXPLICIT_SCHED属性。即使在现在也可以参见例如here,例如,irq处理程序和其他东西将中断您的线程并运行。

但是,如果您只关心自己进程中的线程无法执行任何操作,那么可以,将它们阻塞在您正在运行的线程所持有的互斥体上就足够了。

困难的部分是在您的线程需要执行其操作时,协调所有其他线程以获取该互斥量。

2020-06-02