Объект встроенный объект

Состояние объекта

Условная переменная объекта

Условные переменные представляют собой механизм синхронизации с использованием глобальных переменных, совместно используемых волокнами, которые в основном включают два действия: 1) один поток ожидает установления определенного условия и приостанавливает себя; 2) другой поток выполняет условие как истинное И уведомить ожидающее волокно для выполнения вниз.

Чтобы предотвратить конкуренцию, каждая переменная условия требует взаимодействия Lock ( Lock может быть явно создан и передан сам по себе или может быть создан с помощью fibjs для вас)

Используя условные переменные, можно использовать одну условную переменную для управления партией оптоволоконных коммутаторов;

Ниже приведены два примера планирования оптоволокна:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
var coroutine = require("coroutine"); var cond = new coroutine.Condition(); var ready = false; var state = "ready"; function funcwait() { cond.acquire(); while (!ready) cond.wait(); state = "go" cond.release(); } coroutine.start(funcwait); cond.acquire(); console.log(state) ready = true; cond.notify(); coroutine.sleep(); console.log(state);

будет выводить:

1 2
ready go

наследование

Конструктор

Condition

Конструктор условных переменных (блокировка, необходимая для условных переменных, создается внутренне при помощи fibjs)

1
new Condition();

Конструктор условных переменных

1
new Condition(Lock lock);

Параметры вызова:

  • lock : Lock , используйте самостоятельно построенный замок

Функция-член

wait

Поместите волокно в заблокированное состояние

1
Condition.wait();

notify

Уведомить заблокированное волокно (наконец, добавленное в пул волокон), чтобы продолжить выполнение

1
Condition.notify();

notifyAll

Уведомить все заблокированные волокна, чтобы продолжить выполнение

1
Condition.notifyAll();

acquire

Взять на себя ответственность за замок

1
Boolean Condition.acquire(Boolean blocking = true);

Параметры вызова:

  • blocking : Boolean, указать, нужно ли ждать, ждать, когда true, по умолчанию true

Вернуть результат:

  • Boolean , возвращает, была ли блокировка успешно получена, true означает успешное получение

Метод получения используется для получения владения блокировкой. Когда блокировка находится в состоянии получения, этот метод немедленно возвращает true.

Когда блокировка недоступна и блокировка имеет значение true, текущее волокно переходит в спящий режим. Когда другие волокна снимают блокировку, этот метод возвращает значение true.

Когда блокировка недоступна и блокировка ложна, метод возвращает ложь.


release

Отпустить право собственности на замок

1
Condition.release();

Этот метод освободит владение блокировкой. Если текущее волокно не владеет блокировкой, этот метод выдаст ошибку.


count

Запрос текущего количества ожидающих задач

1
Integer Condition.count();

Вернуть результат:

  • Integer , возвращает количество задач

toString

Возвращает строковое представление объекта, обычно возвращает «[Native Object]», объект может быть переопределён согласно его собственным характеристикам

1
String Condition.toString();

Вернуть результат:

  • String , возвращает строковое представление объекта

toJSON

Возвращает JSON-представление объекта, как правило, возвращает коллекцию читаемых атрибутов, определенных объектом

1
Value Condition.toJSON(String key = "");

Параметры вызова:

  • key : строка, не используется

Вернуть результат:

  • Value , возвращает значение, содержащее сериализуемый JSON