Как получить доступ к общему экземпляру dll через процессы nodejs в электроне? - PullRequest
0 голосов
/ 03 января 2019

Я работаю над электронным приложением, в котором я столкнулся с проблемами блокировки процесса визуализации из-за операций доступа к основному процессу в Dll (используя node-ffi), созданных из приложения Golang. Эти методы DLL вызываются последовательно, и для работы других методов необходимо выполнить некоторые методы DLL.

Чтобы эти вызовы, вызываемые в основном процессе, не блокировали рендерер, я использовал «electronic-remote» (https://www.npmjs.com/package/electron-remote), который может создавать отдельные процессы (используя requireTaskPool). Итак, в основном процессе я создаю экземпляр узла -ffi из библиотеки DLL и выполнить определенные методы из объекта ffi.
Но в новых процессах, созданных с использованием пула задач электронного пульта, DLL-файл ffi - это новый экземпляр. Кроме того, если мы передадим объект DLL в качестве аргумента новому процессу, созданному с использованием удаленного электронного модуля, у нас будет пустая DLL (без свойств объекта).

Я новичок в параллельной обработке в nodejs. Можно ли каким-то образом использовать тот же экземпляр объекта ffi, созданного из dll, в основном процессе приложения электронов в других процессах, разветвленных с использованием дочернего процесса или удаленного электронов?

1 Ответ

0 голосов
/ 04 января 2019

Есть ли способ, которым мы можем использовать тот же экземпляр объекта ffi, созданный из dll, в основном процессе приложения электронов в других процессах, разветвленных с использованием дочернего процесса или удаленного электронов

Нет такого пути. Поскольку это совершенно другой процесс, невозможно сделать единый экземпляр общим для разных процессов. Также ожидается, что объект DLL передается новому процессу, становится пустым, так как IPC электрона позволяет передавать только сериализуемый объект.

Короче говоря, способ использования одного объекта ffi в процессе не пытается совместно использовать объект ffi, но только один процесс ведет себя как исполнитель задач, а другой процесс вызывает запрос / ответ через IPC.

...