Я написал модуль Nodejs C ++, который использует NAN AsyncWorker
выставить функциональность асинхронного модуля. Работает отлично. Однако я понимаю, что AsyncWorker
использует пул потоков libuv, который по умолчанию имеет только 4 потока.
Хотя это (или ограничение, основанное на # ядрах) может иметь смысл для функций, интенсивно работающих с ЦП, некоторые из моих открытых функций могут работать относительно долго, даже если они не используют ЦП (сетевая активность и т. Д.). Поэтому пул потоков может быть полностью израсходован, даже если не требуется интенсивной работы.
Простое решение — увеличить размер пула потоков (UV_THREADPOOL_SIZE
). Однако меня беспокоит, что этот пул потоков используется и для других целей, которые могут пострадать из-за снижения производительности из-за слишком большого распараллеливания (документация libuv гласит: «Пул потоков является глобальным и общим для всех циклов событий …» ).
Является ли мое беспокойство действительным Есть ли способ использовать отдельный, больший, пул потоков только наверняка AsyncWorker
Это долго, но не сильно нагружает процессор, оставляя общий пул потоков нетронутым?
Задача ещё не решена.
Других решений пока нет …