Я пытаюсь реализовать расширение C++ для интеграции с node.js. Это расширение будет внутренне вызывать некоторые блокирующие вызовы, поэтому ему необходимо обеспечить неблокирующий интерфейс для мира node.js.Интеграция Node.js и C/C++: как правильно реализовать обратные вызовы?
Как указано в https://nodejs.org/api/addons.html, есть два способа реализации неблокирующих обратных вызовов:
а) с помощью простого обратного вызова функции JavaScript. Поэтому мое расширение должно было бы порождать поток и немедленно возвращаться, и пусть этот поток вызывает блокирующий код, а затем вызывает обратный вызов JavaScript при возврате. Это кажется относительно простым в реализации.
b) Используя библиотеку libuv, чтобы, если я правильно понял, отправьте событие в цикл событий node.js. Я не читал документацию libuv подробно, но это кажется довольно сложным для реализации.
Мои предпочтения, конечно, а), но я не знаю, каковы последствия. Есть ли проблема, если обратный вызов вызывается из другого потока, таким образом, cimcurventing стандартного подхода node.js к неблокирующему IO? Или libuv нужно использовать для правильной обработки потоков для моего кода и его блокирующих вызовов?
Большое спасибо за помощь.
Большое спасибо, посмотрим на код. –