モジュールコルーチン
同時実行制御モジュール
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
16const 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.sleep
CPU を解放し、他のものをfiber
実行できるようにします。
物体
Lock
オブジェクトをロックします。参照Lock
1Lock coroutine.Lock;
Semaphore
セマフォ オブジェクト、参照Semaphore
1Semaphore coroutine.Semaphore;
Condition
条件変数オブジェクト、を参照してください。Condition
1Condition coroutine.Condition;
Event
イベントオブジェクト、参照Event
1Event coroutine.Event;
Worker
独立したスレッド作業オブジェクト、を参照してください。Worker
1Worker coroutine.Worker;
静的関数
start
ファイバーを開始し、ファイバーオブジェクトを返します。
1
2static Fiber coroutine.start(Function func,
...args);
呼び出しパラメータ:
- func: 関数、ファイバーによって実行される関数を指定します
- args: ...、ファイバー内の関数に渡される引数の可変長シーケンス
返される結果:
- Fiber、ファイバーオブジェクトを返します
parallel
一連の関数を並行して実行し、戻りを待ちます。
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
呼び出しパラメータ:
- funcs: 配列、並列実行される関数の配列
- fibers: 整数、同時ファイバーの数を制限します。デフォルトは -1 で、関数と同じ数のファイバーを有効にします。
返される結果:
- Array、関数の実行結果の配列を返します。
関数を並行して実行して一連のデータを処理し、戻りを待ちます。
1
2
3static Array coroutine.parallel(Array datas,
Function func,
Integer fibers = -1);
呼び出しパラメータ:
- datas: 配列、並列実行用データ配列
- func:関数、並列実行される関数
- fibers: 整数、同時ファイバーの数を制限します。デフォルトは -1 で、データと同じ数のファイバーを有効にします。
返される結果:
- Array、関数の実行結果の配列を返します。
関数を複数回並行して実行し、戻りを待ちます。
1
2
3static Array coroutine.parallel(Function func,
Integer num,
Integer fibers = -1);
呼び出しパラメータ:
- func: 関数、並列実行される関数の数
- num: 整数、繰り返されるタスクの数
- fibers: 整数、同時ファイバーの数を制限します。デフォルトは -1 で、関数と同じ数のファイバーを有効にします。
返される結果:
- Array、関数の実行結果の配列を返します。
一連の関数を並行して実行し、戻りを待ちます。
1static Array coroutine.parallel(...funcs);
呼び出しパラメータ:
- funcs: ...、並列して実行される一連の関数
返される結果:
- Array、関数の実行結果の配列を返します。
current
現在のファイバーを返します
1static Fiber coroutine.current();
返される結果:
- Fiber、現在のファイバー オブジェクト
sleep
現在のファイバーを指定された時間一時停止します
1static coroutine.sleep(Integer ms = 0) async;
呼び出しパラメータ:
- ms: 整数。一時停止する時間をミリ秒単位で指定します。デフォルトは 0 です。つまり、時間があるときに操作がすぐに再開されます。
静的プロパティ
fibers
配列。現在実行中のすべてのファイバー アレイを返します。
1static readonly Array coroutine.fibers;
spareFibers
整数、クエリおよびアイドル設定Fiber量、サーバーのジッターが大きい場合、アイドルを適切に増やすことができますFiber量。デフォルトは256です
1static Integer coroutine.spareFibers;
vmid
整数、現在の値を問い合わせるvmシリアルナンバー
1static readonly Integer coroutine.vmid;
loglevel
整数、これを変更してクエリしますvm出力レベルは、出力情報をフィルタリングするために使用されます。デフォルトは次のとおりです。console.NOTSET、すべて出力します
1static Integer coroutine.loglevel;