NodeJS Синтаксическая идея потока
Я хотел улучшить свои знания NodeJS, поэтому я решил написать дополнение C++. По своему опыту работы с Node я обнаружил, что существующие потоки делают простые процессы с коротким сроком службы очень сложными для запуска в отдельном потоке.
Я не знаю, упустил ли я что-то жизненно важное, что усложнило бы его, но у меня было приложение, в котором я хотел обрезать несколько сотен изображений на сервере (относительно короткий процесс, но все еще достаточно длинный, чтобы заблокировать цикл событий и вызвать проблемы для входящие запросы). Для этого я использовал пакет child-process, но мне все равно пришлось создать отдельный файл, содержащий код обрезки и выяснить, как сериализовать изображения и отправить их в виде сообщений.
Я подумал, что попытался бы реализовать пакет узлов, который содержал бы объект потока, чтобы позволить C#-шить поток с обещающим синтаксисом.
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();
Мой опыт в этой области ограничен, поэтому я публикую его для отзывов о полезности этой идеи и предложений по изменениям.
Заранее спасибо.