Охраняемая подвеска - Guarded suspension
эта статья нужны дополнительные цитаты для проверка.Декабрь 2010 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В параллельное программирование, охраняемая подвеска[1] это шаблон разработки программного обеспечения для управления операциями, требующими как замок быть приобретенным и предварительное условие быть удовлетворенным перед выполнением операции. Шаблон защищенной приостановки обычно применяется к вызовам методов в объектно-ориентированных программах и включает в себя приостановку вызова метода и вызывающего потока до выполнения предварительного условия (действующего как охранять ) доволен.
Применение
Потому что это так блокировка, шаблон защищенной приостановки обычно используется только тогда, когда разработчик знает, что вызов метода будет приостановлен на конечный и разумный период времени. Если вызов метода приостанавливается на слишком долгое время, программа в целом замедляется или останавливается, ожидая выполнения предварительного условия. Если разработчик знает, что приостановка вызова метода будет бессрочной или неприемлемо долгой, то образец отказа может быть предпочтительным.
Реализация
В Java класс Object предоставляет ждать()
и уведомлять()
методы, помогающие с защищенной приостановкой. В реализации ниже, первоначально найденной в Кучана (2004), если для успешного вызова метода не выполнено предварительное условие, метод будет ждать, пока он, наконец, не перейдет в допустимое состояние.
общественный класс пример { синхронизированный пустота охраняемыйМетод() { в то время как (!предварительное условие()) { пытаться { // Продолжаем ждать Подождите(); // … } ловить (InterruptedException е) { // … } } // Актуальная реализация задачи } синхронизированный пустота alterObjectStateMethod() { // Изменяем состояние объекта // … // Сообщаем ожидающим потокам уведомлять(); }}
Примером реальной реализации может быть объект очереди с получать
, у которого есть защита для обнаружения, когда в очереди нет элементов. Однажды положил
уведомляет другие методы (например, получать
метод), то получать
может выйти из защищенного состояния и продолжить вызов. Когда очередь пуста, получать
метод снова войдет в охраняемое состояние.
Смотрите также
- Образец отказа альтернативный шаблон для работы с предусловием
- Защищенный командный язык включает аналогичную языковую конструкцию
- Блокировка чтения-писателя
Заметки
- ^ Ли, Дуг (2000). Параллельное программирование в Java Second Edition. Ридинг, Массачусетс: Эддисон-Уэсли. ISBN 0-201-31009-0.
использованная литература
- Кучана, Партха (2004). "Шаблоны проектирования архитектуры программного обеспечения в Java". Бока-Ратон, Флорида: публикации Ауэрбаха. Цитировать журнал требует
| журнал =
(Помогите)CS1 maint: ref = harv (ссылка на сайт).
Эта Информатика статья - это заглушка. Вы можете помочь Википедии расширяя это. |