Objecte objecte incorporat

Condició de l'objecte

Condició objecte variable

Les variables de condició són un mecanisme que utilitza variables globals compartides entre fibres per sincronitzar-se. Inclou principalment dues accions: 1) Un fil espera que s’estableixi una determinada condició i es suspengui; 2) Un altre fil fa que s’estableixi la condició i notifiqui la fibra que s’espera per executar cap avall.

Per evitar la competència, cada variable de condició en necessita unaLockPartit (LockEs pot crear i passar explícitament per vosaltres mateixos, o bé el podeu crear fibjs per a vosaltres)

Mitjançant l'ús de variables de condició, es pot utilitzar una variable de condició per controlar l'interruptor d'un lot de fibres;

Els següents són dos exemples de programació de fibra:

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);

produirà:

1 2
ready go

Herència

#lineWidth: 1.5 #font: Helvetica,sans-Serif #fontSize: 10 #leading: 1.6 #.this: fill=lightgray #.class: fill=white [<class>object|toString();toJSON()] [<class>Lock|new Lock()|acquire();release();count()] [<this>Condition|new Condition()|wait();notify();notifyAll()] [object] <:- [Lock] [Lock] <:- [Condition] Lock new Lock() acquire() release() count() Condition new Condition() wait() notify() notifyAll() object toString() toJSON()

Constructor

Condition

Constructor de variables de condició (el bloqueig requerit per la variable de condició és construït internament per fibjs)

1
new Condition();

Constructor de variables de condició

1
new Condition(Lock lock);

Paràmetres de trucada:

  • lock: Lock, Utilitzeu un pany de construcció pròpia

Funció de membre

wait

Posa la fibra en estat de bloqueig

1
Condition.wait();

notify

Notifiqueu una fibra bloquejada (la que es va afegir a la reserva de fibra la darrera) per continuar la seva execució cap avall

1
Condition.notify();

notifyAll

Notifiqueu a totes les fibres bloquejades per continuar l'execució cap avall

1
Condition.notifyAll();

acquire

Adquiriu la propietat del pany

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

Paràmetres de trucada:

  • blocking: Booleà, especifiqueu si cal esperar; si és cert, espereu, el valor per defecte és cert

Resultat de retorn:

  • Boolean, Torna si el bloqueig s'ha adquirit correctament, és cert que l'adquisició s'ha realitzat correctament

El mètode d’adquisició s’utilitza per adquirir la propietat del pany. Quan el pany es troba en un estat que es pot adquirir, aquest mètode torna cert immediatament.

Quan el bloqueig no està disponible i el bloqueig és cert, la fibra actual es queda en repòs. Quan altres fibres alliberen el bloqueig, aquest mètode torna a ser cert.

Quan el bloqueig no està disponible i el bloqueig és fals, el mètode torna fals.


release

Allibera la propietat del bloqueig

1
Condition.release();

Aquest mètode alliberarà la propietat del pany. Si la fibra actual no és propietària del pany, aquest mètode generarà un error.


count

Consulteu el nombre de tasques en espera actuals

1
Integer Condition.count();

Resultat de retorn:

  • Integer, Retorna el nombre de tasques

toString

Retorna la representació de cadena de l'objecte, generalment retorna "[Objecte natiu]", l'objecte es pot tornar a implementar segons les seves pròpies característiques

1
String Condition.toString();

Resultat de retorn:

  • String, Retorna la representació de cadena de l'objecte

toJSON

Retorna la representació en format JSON de l'objecte, generalment retorna una col·lecció d'atributs llegibles definits per l'objecte

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

Paràmetres de trucada:

  • key: Cadena, sense utilitzar

Resultat de retorn:

  • Value, Retorna un valor que conté JSON serialitzable