Предположим, что следующий код выполняется 10 потоками.
pthread_mutex_lock(&lock)
Some trivial code
pthread_mutex_unlock(&lock)
В целях пояснения можно сказать, что потоки являются T1, T2, T3..... T10. Мое требование состоит в том, что до тех пор, пока T1 или T2 или T3 (т.е. любой из T1, T2 или T3) ждут получения блокировки, другие потоки T4, T5, T6..... T10 не смогут получить блокировка, т.е. T1, T2 и T3, должны иметь приоритет при приобретении блокировки по отношению к другим потокам.
Я думаю, это можно сделать, увеличив приоритет потоков T1, T2 и T3
Здесь приведен псевдокод
if this thread is T1 or T2 or T3
increase its priority
pthread_mutex_lock(&lock)
Some trivial code
pthread_mutex_unlock(&lock)
if this thread is T1 or T2 or T3 decrease it priority to normal
Обратите внимание, что я хочу, чтобы решение работало на платформе Linux и должно использовать pthreads. Мне не нужна всякая другая платформа.
Также обратите внимание, что я действительно не хочу, чтобы эти 3 потока выполнялись как в реальном времени, я хочу, чтобы они демонстрировали свое поведение defualt (планирование и приоритет), за исключением того, что в вышеупомянутом небольшом фрагменте кода я хочу, чтобы они всегда имели приоритет при получении блокировки.
Я прочитал несколько справочных страниц о планировании политик и планировании приоритетов в Linux, но не могу понять: (
Будет ли это работать? Можете ли вы помочь мне с точным API-интерфейсом pthread, необходимым для выполнения вышеуказанной задачи?
Отношения Lali