You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Охраняемая приостановка (синхронизация)

Материал из EverybodyWiki Bios & Wiki
Перейти к:навигация, поиск

Ошибка скрипта: Модуля «Unsubst» не существует. 

Шаблон:Шаблон проектирования Охраняемая приостановка (англ. Шаблон:Langi) — это шаблон проектирования в параллельном программировании для управления операциями, которые для начала своего выполнения требуют как получения блокировки, так и удовлетворения заданным предварительным условиям.

Охраняемая приостановка — общепринятая идиома для координации работы потоков.

Пример на Java[править]

В следующем примере показан обмен сообщениями между двумя потоками с использованием шаблона охраняемая приостановка:

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) {}
        }

        // Сохраняем сообщение.
        this.message = message;

        // Переключаем статус.
        empty = false;

        // Уведомляем поток-приёмник, о том
        // что статус был изменён.
        notifyAll();
    }
}

Литература[править]

Ссылки[править]

  • Guarded Blocks, Concurrency, The Java™ Tutorials [1]

Шаблон:Ambox

This article "Охраняемая приостановка (синхронизация)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Охраняемая приостановка (синхронизация). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.



Read or create/edit this page in another language[править]