我正在开发一个电子应用程序,在该应用程序中,我遇到了由于Golang应用程序创建的Dll (使用node-ffi)中的主进程访问操作而导致渲染器进程阻塞的问题。这些DLL方法是按顺序调用的,必须执行DLL的某些方法才能使其他方法工作。
为了使在主进程中调用的这些执行不会阻塞渲染器,我使用了“电子远程”(https://www.npmjs.com/package/electron-remote),它可以创建单独的进程(使用requireTaskPool)。因此,在主进程中,我实例化来自DLL的node-ffi对象,并执行来自ffi对象的某些方法。
但在使用电子远程任务池创建的新进程中,DLL'd ffi是一个新实例。此外,如果我们将DLL对象作为参数传递给使用electron-remote创建的新进程,则会有一个空的DLL (没有对象属性)。
我是nodejs中并发处理的新手。我们有没有办法在电子应用程序的主进程中使用从dll创建的ffi对象的相同实例,在使用子进程或电子远程进程的其他进程中使用?
发布于 2019-01-04 07:18:38
我们有没有办法在电子应用程序的主进程中使用从dll创建的ffi对象的相同实例,在使用子进程或电子远程进程的其他进程中使用
没有这样的方法。因为它是完全不同的进程,所以无法在不同的进程之间共享单例实例。此外,它还期望将DLL对象传递给新的进程,因为电子的IPC只允许传递可序列化的对象。
简而言之,跨进程使用一个ffi对象的方法不是试图共享ffi对象,而是只有一个进程作为任务运行者,而其他进程通过IPC调用请求/响应。
https://stackoverflow.com/questions/54027059
复制相似问题