郁闷了,miniblink的electron接口必须使用多进程模式了_龙泉寺扫地僧 - 码子裤

技术标签:   Electron  IDE  编程算法

郁闷了,miniblink的electron接口必须使用多进程模式了

作者:龙泉寺扫地僧


最近miniblink的electron模式开发本来一切顺利,但昨天遇到一个大坑。

electron里主进程和渲染进程是分开的,在miniblink的electron模式里是使用多线程模拟的,每个线程都有自己的v8 context。本来一切ok,但

在跑vscode的时候,发现一处大坑!

vscode的node_modules\gc-signals  模块,是个native 模块,vscode在导入一个文件夹的时候,会重启整个渲染进程,这样gc-signals 也会被重新加载一遍,重新在native层注册各种V8里的函数。这在多进程下没问题,每次重新加载时会重启一个新进程,重新注册v8函数。

而多线程模拟的就不行了。如果每次重新调用注册函数,gc-signals 里由于native代码用到了全局变量,全局变量是会被反复初始化的。这就尴尬了,有些如uv_mutex_t是不能重复初始化的。

目前想来想去,只能搞过架构大重构了,把之前精心设计、精巧简单的单进程多线程模式改造成多进程了,然而,多进程调试起来麻烦多了。

本文参与 码字裤自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weolar复制
如有侵权,请联系 heekey.com 删除。



 

 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.heekey.com/article/weixin_1393102.html

智能推荐

Electron + vue搭建项目

本人也在不断的学习和积累中,文章中有不足和误导的地方还请见谅,可以给我留言指正。希望和大家共同进步,共建和谐学习环境。

Electron入门教程3 ——进程通信

在Electron中,进程通过开发人员定义的“通道”与ipcMain模块和ipcRenderer模块进行通信。这些通道是任意的(您可以任意命名它们)和双向的(您...

Electron入门教程2 ——进程模型

Web浏览器是非常复杂的应用程序。除了显示网页内容的主要功能外,它们还有许多次要的职责,比如管理多个窗口(或标签)和加载第三方扩展。 在早期,浏览器通常使用一...

Electron入门教程1 —— 编写第一个桌面应用程序

关于Electron这个框架我就不多介绍,它说白了就是Node和Chromium内核的一种封装。用它开发出来的桌面应用程序其实就是套壳浏览器的应用,这就是为什么...

mac升级ventura系统之后electron项目打包报错问题

mac 升级了系统之后,之前的 electron 项目打包出现了异常,无法生成安装包:

如何开发Vite3插件构建Electron开发环境

开发新版本 Vue 项目推荐你使用 Vite 脚手架构建开发环境,然而 Vite 脚手架更倾向于构建纯 Web 页面,而不是桌面应用,因此开发者要做很多额外的配...

Electron是什么以及可以做什么

经济学中的“有需求就有市场”,在技术领域也不例外,Electron 是应需求而生的,Electron 面世之后,非但满足了现有大部分的开发需求,还创造了大量的新...

electron preload 提前_electron vue3

最近手头的 electron 项目需要做一个报告导出的功能,导出时要弹出个页面,可让用户自行补全相应的字段。

electron 安装_electron修改文件描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内...

线上Electron应用具备哪些特征?

在上一节中我们介绍了如何升级 Electron 应用,现在我们已经介绍完了如何开发一个 Electron 应用以及如何把 Electron 应用分发给用户。如果...