Многопоточность trainee
4 условия возникновения deadlock?
Ответ
(1) Mutual exclusion — ресурс не разделяемый. (2) Hold and wait — поток держит один ресурс, ждёт другой. (3) No preemption — отнять ресурс нельзя. (4) Circular wait — цикл ожидания. Чтобы deadlock был — нужны все четыре одновременно, поэтому для предотвращения достаточно нарушить любое одно из них.
Разбор: Классические условия Коффмана — это mutual exclusion, hold and wait, no preemption и circular wait, и deadlock возможен только при одновременном выполнении всех четырёх. Поэтому для предотвращения достаточно нарушить любое одно из них; ловушки — подмена «no preemption» на «preemption», подмена «достаточно всех четырёх» на «достаточно одного» и подмена терминов на race condition/starvation, которые относятся к другим проблемам.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.