Oggetto oggetto incorporato

Condizione dell'oggetto

Oggetto variabile condizione

Le variabili di condizione sono un meccanismo che utilizza le variabili globali condivise tra le fibre per sincronizzarsi. Comprende principalmente due azioni: 1) Un thread attende che venga stabilita una determinata condizione e si sospende; 2) Un altro thread fa in modo che la condizione venga stabilita e notifica la fibra in attesa di eseguire verso il basso.

Per prevenire la concorrenza, ogni variabile di condizione ne ha bisognoLockIncontro (LockPuò essere esplicitamente creato e passato da te o può essere creato da fibjs per te)

Utilizzando le variabili di condizione, è possibile utilizzare una variabile di condizione per controllare la commutazione di un lotto di fibre;

Di seguito sono riportati due esempi di pianificazione della 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);

produrrà:

1 2
ready go

Eredità

#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()

Costruttore

Condition

Costruttore della variabile di condizione (il blocco richiesto dalla variabile di condizione è costruito internamente da fibjs)

1
new Condition();

Costruttore di variabili di condizione

1
new Condition(Lock lock);

Parametri di chiamata:

  • lock: Lock, Usa un lucchetto autocostruito

Funzione membro

wait

Metti la fibra in stato di blocco

1
Condition.wait();

notify

Notificare una fibra bloccata (quella che è stata aggiunta per ultima al pool di fibre) per continuare la sua esecuzione verso il basso

1
Condition.notify();

notifyAll

Notifica a tutte le fibre bloccate di continuare l'esecuzione verso il basso

1
Condition.notifyAll();

acquire

Acquisire la proprietà della serratura

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

Parametri di chiamata:

  • blocking: booleano, specifica se aspettare, se è vero, aspetta, il valore predefinito è vero

Risultato di ritorno:

  • Boolean, Restituisce se il blocco è stato acquisito con successo, true significa che l'acquisizione è andata a buon fine

Il metodo di acquisizione viene utilizzato per acquisire la proprietà del blocco. Quando il blocco è in uno stato acquisibile, questo metodo restituisce immediatamente true.

Quando il blocco non è disponibile e il blocco è vero, la fibra corrente va in sospensione.Quando altre fibre rilasciano il blocco, questo metodo restituisce vero.

Quando il blocco non è disponibile e il blocco è falso, il metodo restituisce false.


release

Rilascia proprietà blocco

1
Condition.release();

Questo metodo rilascerà la proprietà del blocco. Se la fibra corrente non possiede il blocco, questo metodo genererà un errore.


count

Interroga il numero di attività attualmente in attesa

1
Integer Condition.count();

Risultato di ritorno:

  • Integer, Restituisce il numero di attività

toString

Restituisce la rappresentazione in stringa dell'oggetto, generalmente restituisce "[Native Object]", l'oggetto può essere re-implementato secondo le proprie caratteristiche

1
String Condition.toString();

Risultato di ritorno:

  • String, Restituisce la rappresentazione di stringa dell'oggetto

toJSON

Restituisce la rappresentazione in formato JSON dell'oggetto, generalmente restituisce una raccolta di attributi leggibili definiti dall'oggetto

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

Parametri di chiamata:

  • key: Stringa, inutilizzata

Risultato di ritorno:

  • Value, Restituisce un valore contenente JSON serializzabile