ObjectCondition
objecte variable de condició
Les variables de condició són un mecanisme que utilitza variables globals compartides entre fibres per a la sincronització. Inclou principalment dues accions: 1) Un fil espera que una determinada condició sigui certa i se suspèn; 2) Un altre fil fa que la condició sigui vertadera i notifica l'espera. fibra per executar-se cap avall.
Per evitar curses, cada variable de condició necessita aLockcooperació (LockPodeu crear-lo explícitament i passar-lo, o podeu deixar que els fibjs el creïn per vosaltres)
Mitjançant l'ús de variables de condició, es pot utilitzar una variable de condició per controlar la commutació d'un lot de fibres;
A continuació es mostren 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
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);
sortirà:
1
2ready
go
relació hereditària
Constructor
Condition
Constructor de variables de condició (el bloqueig necessari per a la variable de condició es construeix internament per fibjs)
1new Condition();
constructor de variables de condició
1new Condition(Lock lock);
Paràmetres de trucada:
- lock:Lock, utilitzant panys autoconstruïts
funció de membre
wait
esperar una variable de condició
1Boolean Condition.wait(Integer timeout = -1);
Paràmetres de trucada:
- timeout: Sencer, especifica el temps d'espera en mil·lisegons. El valor predeterminat és -1, la qual cosa significa que no s'espera mai.
Resultats de retorn:
- Boolean, retorna true si l'adquisició té èxit, retorna false si s'esgota el temps.
notify
Notifiqueu una fibra bloquejada (l'última que s'afegeix al conjunt de fibra) per continuar l'execució cap avall
1Condition.notify();
notifyAll
Aviseu a totes les fibres bloquejades per continuar l'execució cap avall
1Condition.notifyAll();
acquire
Obteniu la propietat del pany
1Boolean Condition.acquire(Boolean blocking = true);
Paràmetres de trucada:
- blocking: Booleà, especifica si s'ha d'esperar, esperar quan és cert, per defecte és cert
Resultats de retorn:
- Boolean, retorna si el bloqueig s'ha adquirit correctament, true indica l'adquisició correcta.
El mètode d'adquisició s'utilitza per obtenir la propietat del bloqueig. Quan el bloqueig està en l'estat d'adquirir, aquest mètode retorna veritable immediatament.
Quan el bloqueig no es pot adquirir i el bloqueig és cert, la fibra actual s'entén. Quan altres fibres alliberen el bloqueig, aquest mètode torna cert.
Quan el bloqueig no es pot adquirir i el bloqueig és fals, el mètode retorna fals.
release
Allibera la propietat del pany
1Condition.release();
Aquest mètode alliberarà la propietat del bloqueig o generarà un error si la fibra actual no és la propietària del bloqueig.
count
Consulta el nombre actual de tasques en espera
1Integer Condition.count();
Resultats de retorn:
- Integer, retorna el nombre de tasques
toString
Retorna la representació de cadena de l'objecte. En general, es retorna "[Objecte natiu]". L'objecte es pot tornar a implementar segons les seves pròpies característiques.
1String Condition.toString();
Resultats de retorn:
- String, retorna la representació de cadena de l'objecte
toJSON
Retorna una representació en format JSON de l'objecte, generalment retornant una col·lecció de propietats llegibles definides per l'objecte.
1Value Condition.toJSON(String key = "");
Paràmetres de trucada:
- key: Corda, no utilitzada
Resultats de retorn:
- Value, retorna un valor que conté JSON serializable