до освобождения мутекса, один
Автор admin Среда, 1 июля 2009 11:32
до освобождения мутекса, один поток может быть приостановлен в ожидании другого потока, который в свою очередь ожидает третьего потока и т. д., пока цепочка не вернется к самому первому объекту. Возникает замкнутый цикл из потоков, каждый из кото- Взаимная блокировка 587 рых ожидает другого потока и не может сдвинуться с места. Такая ситуация называется взаимной блокировкой. Если взаимная блокировка возникает сразу же после запуска программы, вы тут же узнаете о возникшей проблеме и сможете исправить ошибку. Настоящие проблемы начинаются, если программа на первый взгляд работает нормально, но в ней скрывается потенциальная возможность взаимной блокировки. В этом случае вы и не подозреваете о возможности взаимной блокировки, пока она неожиданно не проявится на компьютере клиента (причем, скорее всего, вам не удастся легко воспроизвести проблему). Можно сделать вывод, что предотвращение взаимной блокировки посредством тщательного проектирования является важным аспектом разработки многопоточных программ. Рассмотрим классический пример взаимной блокировки, предложенный Эдгаром Дейкстрой (Edsger Dijkstra).
Комментарии закрыты.
Последние комментарии