NodeJS Синтаксическая идея потока - PullRequest
0 голосов
/ 01 января 2019

Я хотел улучшить свои знания по NodeJS, поэтому я решил написать дополнение C ++.Из моего опыта работы с Node я обнаружил, что существующие потоки делают простые процессы с коротким сроком службы очень сложными для запуска в отдельном потоке.

Я не знаю, упустил ли я что-то важное, что усложнило его, но у меня было приложение, в котором я хотел обрезать несколько сотен изображений на сервере (относительно короткий процесс, но все еще достаточно длинный, чтобы заблокировать цикл обработки событий и вызвать проблемы для входящих запросов).Для этого я использовал пакет child-process, но мне все равно пришлось создать отдельный файл, содержащий код обрезки, и выяснить, как сериализовать изображения и отправить их в виде сообщений.

Я подумал, что постараюсь реализоватьпакет узла, который содержал бы объект потока, чтобы позволить C # -ish-многопоточность с подобным обещанию синтаксисом.

function doWork(arg) {
    // something that takes awhile
}

function TenSecondProcess(arg1, arg2) {
    return new Thread(() => {
        return doWork(arg1) + doWork(arg2);
    }
}

function main() {
    var a = 25;
    var b = 21;
    TenSecondProcess(a, b).then((result) => {
        console.log(result);
    }.catch((err) => {
        console.error(err);
    }
}

И я также рассматривал реализацию функции для объекта, который блокирует, пока значение не будет вычислено для вложениятемы или для кода javascript, не использующего парадигму обратного вызова / обещания.

var thread = TenSecondProcess(a, b);
// other work
var result = thread.result();

Мой опыт в этой области ограничен, поэтому я публикую это для отзывов о полезности этой идеи и предложений по изменениям.

Заранее спасибо.

...