Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
flash.concurrent 

Condition  - AS3

Пакетflash.concurrent
Классpublic final class Condition
НаследованиеCondition Inheritance Object

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.5, AIR 3.5

Объект Condition представляет собой инструмент, который обеспечивает совместное использование ресурса потоками worker и дополнительную возможность приостановки выполнения, пока не будет удовлетворено определенное условие. Объект Condition используется вместе с объектом Mutex, расширяя возможности взаимного исключения. Благодаря такой комбинации с взаимным исключением среда выполнения обеспечивает атомарность каждой передачи права владения между потоками worker.

Ниже приводится пример возможного рабочего процесса для использования объекта Condition.

  1. Перед использованием объекта Condition первый поток worker должен принять право владения связанным взаимным исключением условия, вызвав метод lock() или tryLock() объекта Mutex.
  2. Код потока worker работает с общим ресурсом, пока определенное условие не получит значения false, после чего поток worker не сможет продолжать работу с общим ресурсом. Например, если общий ресурс представляет собой набор данных для обработки и в нем больше не остается необработанных данных, поток worker не может продолжать работу.
  3. На этом этапе необходимо вызвать метод wait() объекта Condition, чтобы приостановить выполнение потока worker и освободить право владения взаимным исключением.
  4. В свое время второй поток worker принимает право владения взаимным исключением. Так как взаимное исключение доступно, код второго потока worker может безопасно выполнять операции с общим ресурсом. Второй поток worker выполняет все необходимые действия для удовлетворения условия, чтобы первый поток worker мог возобновить свою работу. Например, если первый поток worker не имеет данных для обработки, второй поток worker может передать в общий ресурс дополнительные данные.
  5. На этом этапе условие, связанное с работой первого потока worker, выполняется, о чем необходимо уведомить этот поток worker. Чтобы уведомить первый поток worker, код второго потока worker вызывает метод notify() или notifyAll() объекта Condition.
  6. Помимо вызова notify() второй поток worker должен освободить право владения взаимным исключением. Это осуществляется путем вызова метода unlock() объекта Mutex или метода wait() объекта Condition. Так как первый поток worker вызывал метод wait(), право владения взаимным исключением возвращается ему. После этого возобновляется выполнение кода в первом потоке worker со строки, которая следует за вызовом метода wait().

Класс Condition относится к типу объектов, которые используются совместно потоками worker, а не копируются между ними. Когда условие передается от одного потока worker другому путем вызова метода setSharedProperty() объекта Worker или с помощью объекта MessageChannel, оба потока worker располагают ссылками на один и тот же объект Condition в памяти среды выполнения.

Связанные элементы API



Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  isSupported : Boolean
[статические] [только для чтения] Указывает, поддерживается ли класс Condition текущей платформой.
Condition
  mutex : Mutex
[только для чтения] Взаимное исключение, связанное с данным условием.
Condition
Общедоступные методы
 МетодОпределено
  
Создает новый экземпляр Condition.
Condition
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
  
Указывает, что условие, представляемое данным объектом Condition, удовлетворено и что право владения взаимным исключением будет возвращено следующему потоку worker, ожидающему выполнения этого условия (если такой имеется).
Condition
  
Указывает, что условие, представляемое данным объектом Condition, удовлетворено и что право владения взаимным исключением будет возвращено всем потокам worker, ожидающим выполнения этого условия.
Condition
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
  
wait(timeout:Number = -1):Boolean
Указывает, что условие, представляемое данным объектом Condition, не удовлетворено, и текущий поток worker должен ждать, пока оно не будет удовлетворено, прежде чем сможет продолжить выполнение кода.
Condition
Сведения о свойстве

isSupported

свойство
isSupported:Boolean  [только для чтения]

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.5, AIR 3.5

Указывает, поддерживается ли класс Condition текущей платформой.

Примечание. Если класс Mutex не поддерживается, создать экземпляр Condition невозможно, это свойство имеет значение false.



Реализация
    public static function get isSupported():Boolean

mutex

свойство 
mutex:Mutex  [только для чтения]

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.5, AIR 3.5

Взаимное исключение, связанное с данным условием.



Реализация
    public function get mutex():Mutex
Сведения о конструкторе

Condition

()Конструктор
public function Condition(mutex:Mutex)

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.5, AIR 3.5

Создает новый экземпляр Condition.

Параметры
mutex:Mutex — взаимное исключение, которое используется объектом Condition для управления транзакциями между потоками worker.
Сведения о методе

notify

()метод
public function notify():void

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.5, AIR 3.5

Указывает, что условие, представляемое данным объектом Condition, удовлетворено и что право владения взаимным исключением будет возвращено следующему потоку worker, ожидающему выполнения этого условия (если такой имеется).

Вызов этого метода не освобождает право владения взаимным исключением автоматически. После вызова notify() необходимо явно освободить право владения взаимным исключением одним из двух способов: вызовите метод Mutex.unlock(), если текущему потоку worker больше не потребуется взаимное исключение, или вызовите wait(), если потоку worker снова потребуется право владения взаимным исключением после завершения работы других потоков worker.

Когда снимается блокировка с взаимного исключения, следующий поток worker в очереди потоков worker, вызвавших метод wait(), получает взаимное исключение и возобновляет выполнение кода.


Выдает
IllegalOperationError — если текущий поток worker не владеет взаимным исключением данного условия

notifyAll

()метод 
public function notifyAll():void

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.5, AIR 3.5

Указывает, что условие, представляемое данным объектом Condition, удовлетворено и что право владения взаимным исключением будет возвращено всем потокам worker, ожидающим выполнения этого условия.

Вызов этого метода не освобождает право владения взаимным исключением автоматически. После вызова notify() необходимо явно освободить право владения взаимным исключением одним из двух способов: вызовите метод Mutex.unlock(), если текущему потоку worker больше не потребуется взаимное исключение, или вызовите wait(), если потоку worker снова потребуется право владения взаимным исключением после завершения работы других потоков worker.

После снятия блокировки с взаимного исключения ожидающие потоки worker по очереди получат право владения в порядке вызова их метода wait(). Каждый поток worker, вызвавший метод wait(), получает взаимное исключение по очереди и возобновляет выполнение кода. Когда этот поток worker вызывает метод Mutex.unlock() или wait(), право владения взаимным исключением передается следующему ожидающему потоку worker. Каждый раз, когда право владения взаимным исключением передается от одного потока worker другому, передача осуществляется в рамках одной атомарной операции.


Выдает
IllegalOperationError — если текущий поток worker не владеет взаимным исключением данного условия

wait

()метод 
public function wait(timeout:Number = -1):Boolean

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.5, AIR 3.5

Указывает, что условие, представляемое данным объектом Condition, не удовлетворено, и текущий поток worker должен ждать, пока оно не будет удовлетворено, прежде чем сможет продолжить выполнение кода. Вызов этого метода приостанавливает выполнение текущего потока worker и освобождает право владения взаимным исключением условия. Эти шаги выполняются как одна атомарная операция. Поток worker остается приостановленным, пока другой поток worker не вызовет метод notify() или notifyAll() этого объекта Condition.

Параметры

timeout:Number (default = -1) — максимальное время (в миллисекундах), на которое поток worker должен приостановить выполнение, прежде чем продолжить. Если это значение -1 (по умолчанию), тайм-аута нет и выполнение кода приостанавливается на неопределенное время.

Возвращает
Booleantrue, если метод возвращен в результате истечения времени тайм-аута. В противном случае, метод возвращает значение false.

Выдает
IllegalOperationError — если текущий поток worker не владеет взаимным исключением данного условия
 
ArgumentError — если аргумент timeout меньше 0 и не равен -1
 
ScriptTimeoutError — если метод вызван из кода первоначального потока worker в Flash Player и привел к приостановке выполнения на время, превышающее таймаут сценария (по умолчанию —15 секунд)
 
Error — если вызван метод и, пока приостановлено выполнение вызвавшего его потока worker, выполнение ожидающего потока worker останавливается.




[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.