Я хотел улучшить свои знания по 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();
Мой опыт в этой области ограничен, поэтому я публикую это для отзывов о полезности этой идеи и предложений по изменениям.
Заранее спасибо.