gpt4 book ai didi

node.js - 如何跨 Electron 中的nodejs进程访问常见的dll实例?

转载 作者:行者123 更新时间:2023-12-03 12:35:04 25 4
gpt4 key购买 nike

我在一个 Electron 应用程序上工作,由于主程序访问从Golang应用程序创建的Dll中的主要进程(使用node-ffi),因此我遇到了渲染器进程阻塞的问题。
这些DLL方法是按顺序调用的,并且某些DLL方法必须执行才能使其他方法起作用。

为了使这些在主进程中调用的执行不会阻塞渲染器,我使用了“electron-remote”(https://www.npmjs.com/package/electron-remote),它可以创建单独的进程(使用requireTaskPool)。因此,在主进程中,我从DLL实例化了node-ffi对象,并从ffi对象执行了某些方法。
但是在使用 Electron 远程任务池创建的新过程中,DLL的ffi是一个新实例。同样,如果我们将DLL对象作为参数传递给使用 Electron 遥控创建的新过程,则我们将有一个空的DLL(没有对象属性)。

我是nodejs中并发处理的新手。在使用子进程或 Electron 远程 fork 的其他进程中,是否有任何方法可以在 Electron 应用程序的主进程中使用从dll创建的ffi对象的相同实例?

最佳答案

Is there any way we can get to use the same instance of the ffi object created from dll in the main process of the electron application in other processes forked using child process or electron-remote



没有这样的方法。由于它是完全不同的过程,因此无法在不同的过程之间共享单例实例。另外,由于 Electron 的IPC仅允许传递可序列化的对象,因此,将DLL对象传递给新进程的期望也变空了。

简而言之,跨进程使用一个ffi对象的方法不是尝试共享ffi对象,而是只有一个进程充当任务运行程序,而其他进程则通过IPC调用请求/响应。

关于node.js - 如何跨 Electron 中的nodejs进程访问常见的dll实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com