モジュール基本モジュール

モジュールコルーチン

同時実行制御モジュール

coroutineこのモジュールは、fiber実行順序を制御するための API を提供します。これにより、開発者は手動で切り替えることができfiber、共同でマルチタスクを実行できるようになります。coroutineモジュールの重要な機能はsleep、現在実行中のfiberモジュールが CPU を放棄し、他のfiberモジュールを実行できるようにする機能です。

coroutine以下は、モジュールの使用方法を示す簡単なコード例です。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
const coroutine = require('coroutine'); function foo() { console.log('start foo'); coroutine.sleep(1000); // enter sleep mode console.log('end foo'); } function bar() { console.log('start bar'); coroutine.sleep(2000); console.log('end bar'); } coroutine.start(foo); coroutine.start(bar);

上記のコードでは、2 つの関数を定義しfoo、その関数barを使用してcoroutine.start両方の関数を開始しますfiberそれぞれの でfiber、関数を使用してcoroutine.sleepCPU を解放し、他のものをfiber実行できるようにします。

物体

Lock

オブジェクトをロックします。参照Lock

1
Lock coroutine.Lock;

Semaphore

セマフォ オブジェクト、参照Semaphore

1
Semaphore coroutine.Semaphore;

Condition

条件変数オブジェクト、を参照してください。Condition

1
Condition coroutine.Condition;

Event

イベントオブジェクト、参照Event

1
Event coroutine.Event;

Worker

独立したスレッド作業オブジェクト、を参照してください。Worker

1
Worker coroutine.Worker;

静的関数

start

ファイバーを開始し、ファイバーオブジェクトを返します。

1 2
static Fiber coroutine.start(Function func, ...args);

呼び出しパラメータ:

  • func: 関数、ファイバーによって実行される関数を指定します
  • args: ...、ファイバー内の関数に渡される引数の可変長シーケンス

返される結果:

  • Fiber、ファイバーオブジェクトを返します

parallel

一連の関数を並行して実行し、戻りを待ちます。

1 2
static Array coroutine.parallel(Array funcs, Integer fibers = -1);

呼び出しパラメータ:

  • funcs: 配列、並列実行される関数の配列
  • fibers: 整数、同時ファイバーの数を制限します。デフォルトは -1 で、関数と同じ数のファイバーを有効にします。

返される結果:

  • Array、関数の実行結果の配列を返します。

関数を並行して実行して一連のデータを処理し、戻りを待ちます。

1 2 3
static Array coroutine.parallel(Array datas, Function func, Integer fibers = -1);

呼び出しパラメータ:

  • datas: 配列、並列実行用データ配列
  • func:関数、並列実行される関数
  • fibers: 整数、同時ファイバーの数を制限します。デフォルトは -1 で、データと同じ数のファイバーを有効にします。

返される結果:

  • Array、関数の実行結果の配列を返します。

関数を複数回並行して実行し、戻りを待ちます。

1 2 3
static Array coroutine.parallel(Function func, Integer num, Integer fibers = -1);

呼び出しパラメータ:

  • func: 関数、並列実行される関数の数
  • num: 整数、繰り返されるタスクの数
  • fibers: 整数、同時ファイバーの数を制限します。デフォルトは -1 で、関数と同じ数のファイバーを有効にします。

返される結果:

  • Array、関数の実行結果の配列を返します。

一連の関数を並行して実行し、戻りを待ちます。

1
static Array coroutine.parallel(...funcs);

呼び出しパラメータ:

  • funcs: ...、並列して実行される一連の関数

返される結果:

  • Array、関数の実行結果の配列を返します。

current

現在のファイバーを返します

1
static Fiber coroutine.current();

返される結果:

  • Fiber、現在のファイバー オブジェクト

sleep

現在のファイバーを指定された時間一時停止します

1
static coroutine.sleep(Integer ms = 0) async;

呼び出しパラメータ:

  • ms: 整数。一時停止する時間をミリ秒単位で指定します。デフォルトは 0 です。つまり、時間があるときに操作がすぐに再開されます。

静的プロパティ

fibers

配列。現在実行中のすべてのファイバー アレイを返します。

1
static readonly Array coroutine.fibers;

spareFibers

整数、クエリおよびアイドル設定Fiber量、サーバーのジッターが大きい場合、アイドルを適切に増やすことができますFiber量。デフォルトは256です

1
static Integer coroutine.spareFibers;

vmid

整数、現在の値を問い合わせるvmシリアルナンバー

1
static readonly Integer coroutine.vmid;

loglevel

整数、これを変更してクエリしますvm出力レベルは、出力情報をフィルタリングするために使用されます。デフォルトは次のとおりです。console.NOTSET、すべて出力します

1
static Integer coroutine.loglevel;