Две задачи с различным приоритетом ждут на одном и том же семафоре, как только семафор получает освобожденную задачу с высоким приоритетом, получает запланированные? или его случайный?, я использую политику планировщика SCHED_RR.Множественные задачи, ожидающие на одном и том же семафоре
ответ
Вообще говоря, я не знаю правила, которое ждет задача ожидания, когда семафор выпущен, так что это зависит от выбора планировщика. «Приоритет» задач, вероятно, имеет значение только для планировщика в случае обычного механизма планирования, а не для синхронизации из-за семафоров.
Поэтому я не могу предположить, что моя задача с высоким приоритетом будет работать, когда выйдет семафор. Каким будет поведение планировщика ядра Linux? Он случайным образом подбирает задание, которое ожидало или похоже на то, что оно заберет задачу, которая сначала попала в очередь? – digitizedx
Неопределенный. Вы можете попробовать, но ожидать изменений в более поздних версиях. Если вам нужно полагаться на поведение, используйте другую технику, а не только семафоры и приоритеты. – Alfe
Если вы используете SCHED_RR
, тогда планировщик запускает задачи с наивысшим приоритетом и запускает такие задачи в первую очередь. Если есть задача с SCHED_RR
и она в состоянии TASK_RUNNING
, она будет работать.
На однопроцессорной системе, если существует задачи с SCHED_RR
и TASK_RUNNING
тогда только этой задачей будет выполняться. Но в многоядерной системе задача с более низким приоритетом может быть запланирована на другом процессоре.
На мой взгляд, задача с более высоким приоритетом и SCHED_RR
запланирована первыми, но нет никакой гарантии, что эта задача сначала получит семафор, потому что этот процессор может выполнять более важную работу, например, прерывания дескриптора.
Опять же, это мое единственное мнение, и я довольно новичок в ядре linux. Было бы здорово, если бы кто-нибудь более опытный, чтобы его одобрить.
Edit:
планировщик не имеет значения для семафора. Он просто пробуждает одну задачу, независимо от ее приоритета.
Итак, вы можете получить блокировку сначала, если ваша задача сначала попытается получить блокировку (это сложно и небезопасно). Или вы можете самостоятельно управлять семафорной очередью.
- 1. Множественные серии y на одном и том же графике androidplot
- 2. Множественные переходы на одном и том же элементе не работают
- 3. Тупик на одном семафоре java?
- 4. Подростки на одном и том же элементе
- 5. Сгенерировать множественные диаграммы разброса на одном и том же холсте из столбцов dataframe
- 6. Множественные ожидающие сокращения с тем же ожидаемым выходом
- 7. Wordpress: множественные таксономии в том же адресе
- 8. iOS: Полужирный и курсив на одном и том же слове
- 9. Cassandra Gossip увеличивает ожидающие задачи
- 10. черчения множественные линейные регрессии на том же участке Сиборн
- 11. Блокировать слишком много пакетов на одном и том же порту
- 12. CakePHP Два маршрута на одном и том же адресе
- 13. Запустите несколько одинаковых объектов на одном и том же хосте
- 14. Backbone.js рендеринг нескольких шаблонов на одном и том же представлении
- 15. Несколько строк на одном и том же участке в R
- 16. ggplot2: построение нескольких графиков на одном и том же участке
- 17. Android: несколько детекторов жестов на одном и том же представлении
- 18. Два нг-клика на одном и том же div
- 19. Использование нескольких .style.transform на одном и том же элементе
- 20. Конфликтующие события на одном и том же объекте
- 21. Несколько мультипликаций SDL на одном и том же экране мерцания
- 22. Динамично использовать фоновую замену на одном и том же изображении
- 23. Два фрейма на одном и том же полном HTML5
- 24. Нитки OpenMP, выполняющиеся на одном и том же ядре процессора
- 25. Построение двух факторов на одном и том же графике
- 26. Плагины Async & Sync на одном и том же событии
- 27. Различные неизменные версии на одном и том же macbook
- 28. Слияние элементов массива на одном и том же ключе
- 29. Связанные с локализацией объекты на одном и том же осколке
- 30. Несколько ACL на одном и том же parseobject
Какой семафор? Как он освобождается? –
Это двоичный семафор. Он выпущен третьей задачей. – digitizedx
Вы используете патч PREEMPT-RT? –