Object-ingebouwd object

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

zal uitvoeren:

1 2
ready go

erfenis relatie

Constructeur

Condition

Conditievariabele constructor (de vergrendeling die vereist is voor de conditievariabele wordt intern geconstrueerd door fibjs)

1
new Condition();

constructor van conditievariabelen

1
new Condition(Lock lock);

Oproepparameters:

  • lock:Lock, met behulp van zelf geconstrueerde sloten

lid functie

wait

wacht op een conditievariabele

1
Boolean 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

1
Condition.notify();

notifyAll

Waarschuw alle geblokkeerde vezels om de uitvoering naar beneden voort te zetten

1
Condition.notifyAll();

acquire

Word eigenaar van het slot

1
Boolean 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

1
Condition.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

1
Integer 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.

1
String 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.

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

Oproepparameters:

  • key: Tekenreeks, niet gebruikt

Resultaten retourneren:

  • Value, retourneert een waarde die JSON-serialiseerbaar bevat