Вопрос проверяет понимание проблем справедливости и планирования потоков.
Starvation — это ситуация, когда поток долгое время не получает доступ к ресурсам. Другие потоки постоянно его опережают. Поток формально жив, но практически не выполняется. Причина — несправедливое распределение ресурсов. Это приводит к деградации работы системы.
Starvation связана не с блокировкой, а с приоритетами и планированием.
Starvation — это состояние, при котором:
поток готов к выполнению
ресурсы постоянно заняты другими потоками
выполнение откладывается неопределенно долго
Starvation может возникать из-за:
высоких приоритетов других потоков
несправедливых lock’ов
частых захватов ресурса одними и теми же потоками
агрессивных retry-циклов
при deadlock потоки заблокированы навсегда
при starvation поток не заблокирован, но игнорируется
Практики:
использование fair-lock’ов
выравнивание приоритетов
ограничение времени удержания ресурсов
Вывод: starvation — это проблема справедливости, при которой поток «голодает», оставаясь формально активным.