모듈 코루틴
동시성 제어 모듈
coroutine
모듈은 fiber
실행 순서를 제어하기 위한 API를 제공합니다. 이를 통해 개발자는 수동으로 전환하여 fiber
공동 멀티태스킹이 가능합니다. coroutine
모듈의 중요한 기능은 현재 실행 중인 모듈이 CPU를 포기하고 다른 모듈이 실행되도록 sleep
하는 기능 입니다 .fiber
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);
위의 코드에서는 두 개의 함수를 정의한 foo
다음 해당 함수를 bar
사용하여 두 . 각각에서 우리는 이 함수를 사용하여 CPU를 확보하고 다른 사람들이 실행되도록 합니다.coroutine.start
fiber
fiber
coroutine.sleep
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
Fiber를 시작하고 Fiber 객체를 반환합니다.
1
2static Fiber coroutine.start(Function func,
...args);
호출 매개변수:
- func: 함수, 광섬유에 의해 실행되는 함수를 지정합니다.
- args: ..., Fiber 내의 함수에 전달될 가변 인수 시퀀스
결과 반환:
- Fiber, 섬유 객체를 반환합니다.
parallel
일련의 기능을 병렬로 실행하고 반환을 기다립니다.
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
호출 매개변수:
- funcs: 배열, 병렬로 실행되는 함수의 배열
- fibers: 정수, 동시 파이버 수를 제한합니다. 기본값은 -1이며, funcs와 동일한 수의 파이버를 활성화합니다.
결과 반환:
- 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이며, funcs와 동일한 수의 파이버를 활성화합니다.
결과 반환:
- 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;