Базовый модуль модуля

Сопрограмма модуля

Модуль управления параллелизмом

coroutineМодуль предоставляет fiberAPI для контроля порядка выполнения. Это позволяет разработчикам переключаться вручную fiber, обеспечивая совместную многозадачность. coroutineВажной функцией модуля является sleepфункция, которая позволяет выполняющемуся в данный момент fiberмодулю отказаться от процессора и позволить другим 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);

В приведенном выше коде мы определяем две функции foo, а barзатем используем coroutine.startих для запуска обеих fiber. В каждом из них fiberмы используем coroutine.sleepфункцию, чтобы освободить процессор и позволить другим 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;