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
21var 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
2ready
go
Eredità
Costruttore
Condition
Costruttore della variabile di condizione (il blocco richiesto dalla variabile di condizione è costruito internamente da fibjs)
1new Condition();
Costruttore di variabili di condizione
1new Condition(Lock lock);
Parametri di chiamata:
- lock: Lock, Usa un lucchetto autocostruito
Funzione membro
wait
Metti la fibra in stato di blocco
1Condition.wait();
notify
Notificare una fibra bloccata (quella che è stata aggiunta per ultima al pool di fibre) per continuare la sua esecuzione verso il basso
1Condition.notify();
notifyAll
Notifica a tutte le fibre bloccate di continuare l'esecuzione verso il basso
1Condition.notifyAll();
acquire
Acquisire la proprietà della serratura
1Boolean 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
1Condition.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
1Integer 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
1String 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
1Value Condition.toJSON(String key = "");
Parametri di chiamata:
- key: Stringa, inutilizzata
Risultato di ritorno:
- Value, Restituisce un valore contenente JSON serializzabile