16-06-2024
Охраняемая приостановка | |
Guarded Suspension | |
Тип: |
Шаблоны параллельного программирования |
---|---|
Назначение: |
Коммуникация между потоками |
Описан в Design Patterns |
Нет |
В параллельном программировании, охраняемая приостановка — это шаблон проектирования для управления операциями, которые для начала своего выполнения требуют как получения блокировки, так и удовлетворения заданным предусловиям.
Охраняемая приостановка — общепринятая идиома для координации работы потоков.
В следующем примере показан обмен сообщениями между двумя потоками с использованием шаблона охраняемая приостановка:
public class Drop { // Сообщение, которое будет передано // от потока-источника потоку-приёмнику. private String message; // True если поток-приёмник должен дождаться пока поток-источник // оставит сообщение, или false если поток-источник должен дождаться // пока поток-приёмник заберёт ранее оставленное (потоком-источником) // сообщение. private boolean empty = true; public synchronized String take() { // Ожидаем, пока сообщение станет доступным. while (empty) { try { wait(); } catch (InterruptedException e) {} } // Переключаем статус. empty = true; // Уведомляем поток-источник, о том // что статус был изменён. notifyAll(); return message; } public synchronized void put(String message) { // Ожидаем, пока поток-приёмник не заберёт // предыдущее сообщение. while (!empty) { try { wait(); } catch (InterruptedException e) {} } // Переключаем статус. empty = false; // Сохраняем сообщение. this.message = message; // Уведомляем поток-приёмник, о том // что статус был изменён. notifyAll(); } }
Охраняемая любовь дорама, платная 77, охраняемая хищная птица.