2015-01-06 3 views
-2

В двигателе v8 код js может работать только в основном потоке. Я нацелен на запуск js-кода ни в каком основном потоке, поэтому задача с интенсивным использованием ЦП не могла бы вытеснить процессор основного времени. Но я просто не знаю, как достичь цели.Как запустить js в главном нити v8?

ОК, я удаляю тег node.js с этим вопросом, мне все равно, как использовать многоядерные в node.js.Я нахожу реализацию потока на основе собственного v8 api. Не скажите решение, которое используется в node.js. На самом деле, я хочу, чтобы кто-то дал мне руководство, основанное на C++ api v8.

This link объясните, почему мы не можем использовать код V8 в ничем основном нити, в пользовательском потоке вы можете запускать только собственный код C++. Это не решение?

+0

Что заставляет вас думать, что v8 может работать только в основной теме? – maerics

+0

В какой среде вы запускаете js? (Например, в браузере или node.js и т. Д.). Большинство поддерживающих среду поддерживают код на других потоках. Например, node.js вы можете использовать кластер. Подробнее см. Руководство. –

+2

Что это связано с C++? – sjdowling

ответ

1

Вам не нужно нырять на такой низкий уровень. Узел достаточно зрелый, чтобы иметь более высокие уровни, доступные для таких вещей.

Вы можете использовать модуль child_process для развертывания основного процесса с помощью child_process.fork(). Затем вы можете параллельно выполнять интенсивные синхронные задачи процессора, не затрагивая основной процесс.

Если вы хотите использовать несколько процессов в качестве стандартных функций для своего приложения, то cluster module - это то, что вам нужно. Модуль основного кластера узлов - это способ, которым большинство людей используют многоядерные системы, запуская несколько процессов узлов и делегируя им работу. Модуль кластера позаботится о деталях детализации для вас и упростит его. Просто ознакомьтесь с некоторыми примерами в the documentation.

Смежные вопросы