Если вы находитесь в ядре и вам действительно нужно отключить приоритет (вероятно, не очень хорошая идея, надеюсь, вы знаете, что делаете), вы можете использовать preempt_disable()
и preempt_enable()
(подробности смотрите в Documentation / preempt-lock.txt).
Если вы находитесь за пределами ядра, ваши возможности очень ограничены.Большинство многопроцессорных или многопоточных приложений создают мьютексы, которые они используют для самоограничения доступа к общим ресурсам.(Вспомните типичные блокировки чтения-записи.) Но это ни в коем случае не атомарно по отношению ко всем остальным процессам в системе.Он просто атомарен по отношению к другим процессам, следующим по тому же протоколу.
(И учитывая, что даже в супердорогих ноутбуках в наши дни одновременно работают несколько процессорных ядер, ваша цель - предотвратить запуск других процессов во время работы критической секциивыполняется обречено на неудачу.)
Вы могли бы предоставить вашему приложению приоритет планирования в реальном времени, но это требует очень тщательного программирования, так как программы с более низким приоритетом(например, X или ssh или bash или ..) не будет работать, если только вы не выдадите процессор или не выполните блокировку ввода-вывода.Подробнее см. sched_setscheduler(2)
.