многопоточность — модуль Node C ++ против размера пула потоков libuv

Я написал модуль Nodejs C ++, который использует NAN AsyncWorker выставить функциональность асинхронного модуля. Работает отлично. Однако я понимаю, что AsyncWorker использует пул потоков libuv, который по умолчанию имеет только 4 потока.

Хотя это (или ограничение, основанное на # ядрах) может иметь смысл для функций, интенсивно работающих с ЦП, некоторые из моих открытых функций могут работать относительно долго, даже если они не используют ЦП (сетевая активность и т. Д.). Поэтому пул потоков может быть полностью израсходован, даже если не требуется интенсивной работы.

Простое решение — увеличить размер пула потоков (UV_THREADPOOL_SIZE). Однако меня беспокоит, что этот пул потоков используется и для других целей, которые могут пострадать из-за снижения производительности из-за слишком большого распараллеливания (документация libuv гласит: «Пул потоков является глобальным и общим для всех циклов событий …» ).

Является ли мое беспокойство действительным Есть ли способ использовать отдельный, больший, пул потоков только наверняка AsyncWorkerЭто долго, но не сильно нагружает процессор, оставляя общий пул потоков нетронутым?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]