Предположим, что следующий код выполняется 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 потока в реальном времени, я хочу, чтобы они демонстрировали свое поведение по умолчанию (планирование и приоритет), за исключением того, что в вышеупомянутом небольшом фрагменте кода я хочу, чтобы они всегда имели приоритет в приобретении блокировки.
Я прочитал некоторые справочные страницы о политиках планирования и приоритетах планирования в Linux, но не могу разобрать: (
Будет ли это работать? Можете ли вы помочь мне с точным API-интерфейсом pthread, необходимым для выполнения вышеуказанной задачи?
С уважением
Лали