Objectconditie
voorwaarde variabel object
Conditievariabelen zijn een mechanisme dat globale variabelen gebruikt die tussen vezels worden gedeeld voor synchronisatie. Het omvat voornamelijk twee acties: 1) Eén thread wacht tot een bepaalde voorwaarde waar is en schort zichzelf op; 2) Een andere thread maakt de voorwaarde waar, en stelt de wachtende op de hoogte vezel om naar beneden uit te voeren.
Om races te voorkomen heeft elke conditievariabele eenLocksamenwerking (LockJe kunt het expliciet zelf maken en doorgeven, of je kunt fibjs het voor je laten maken)
Door gebruik te maken van conditievariabelen kan één conditievariabele worden gebruikt om het schakelen van een batch vezels te regelen;
Hieronder volgen twee voorbeelden van glasvezelplanning:
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);
zal uitvoeren:
1
2ready
go
erfenis relatie
Constructeur
Condition
Conditievariabele constructor (de vergrendeling die vereist is voor de conditievariabele wordt intern geconstrueerd door fibjs)
1new Condition();
constructor van conditievariabelen
1new Condition(Lock lock);
Oproepparameters:
- lock:Lock, met behulp van zelf geconstrueerde sloten
lid functie
wait
wacht op een conditievariabele
1Boolean Condition.wait(Integer timeout = -1);
Oproepparameters:
- timeout: geheel getal, specificeert de time-out in milliseconden. De standaardwaarde is -1, wat betekent dat er nooit een time-out zal optreden.
Resultaten retourneren:
- Boolean, retourneert true als de acquisitie succesvol is en retourneert false als er een time-out optreedt.
notify
Waarschuw een geblokkeerde glasvezel (de laatste die aan de glasvezelpool is toegevoegd) om de uitvoering naar beneden voort te zetten
1Condition.notify();
notifyAll
Waarschuw alle geblokkeerde vezels om de uitvoering naar beneden voort te zetten
1Condition.notifyAll();
acquire
Word eigenaar van het slot
1Boolean Condition.acquire(Boolean blocking = true);
Oproepparameters:
- blocking: Booleaanse waarde, specificeert of er moet worden gewacht, gewacht wanneer waar, standaard is waar
Resultaten retourneren:
- Boolean, geeft terug of het slot met succes is verworven, waar geeft een succesvolle acquisitie aan.
Om het eigendom van het slot te verkrijgen wordt gebruik gemaakt van de acquire-methode. Wanneer het slot zich in de verkrijgbare staat bevindt, retourneert deze methode onmiddellijk true.
Wanneer het slot niet kan worden verkregen en de blokkering waar is, gaat de huidige vezel in de slaapstand. Wanneer andere vezels het slot vrijgeven, retourneert deze methode waar.
Wanneer de vergrendeling niet kan worden verkregen en de blokkering onwaar is, retourneert de methode onwaar.
release
Geef het eigendom van het slot vrij
1Condition.release();
Met deze methode wordt het eigendom van het slot vrijgegeven of wordt er een fout gegenereerd als de huidige glasvezel geen eigenaar van het slot is.
count
Vraag het huidige aantal wachtende taken op
1Integer Condition.count();
Resultaten retourneren:
- Integer, retourneert het aantal taken
toString
Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.
1String Condition.toString();
Resultaten retourneren:
- String, retourneert de tekenreeksrepresentatie van het object
toJSON
Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.
1Value Condition.toJSON(String key = "");
Oproepparameters:
- key: Tekenreeks, niet gebruikt
Resultaten retourneren:
- Value, retourneert een waarde die JSON-serialiseerbaar bevat