郁闷了,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是不能重复初始化的。

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值