在做多线程上传时,遇到了子线程无法创建的问题
查阅了参考资料:
https://juejin.im/post/5d4387c86fb9a06b2c32708b
https://www.electron.build/configuration/configuration.html#overridable-per-platform-options
https://www.electron.build/configuration/contents#extraresources
最终解决方法:
-
将子线程代码单独放在一个js文件中:
worker.js
项目文件结构如下:
|-main.js
|-source
|-upload.js(主线程代码)
|-worker.js(子线程代码,工作线程代码)
-
配置
electron-builder
,关键配置项如下:
"build": {
"asarUnpack": [
"**/node_modules/**/*"
"extraResources": [
"from": "source/worker.js",
"to": "app.asar.unpacked/source/worker.js"
-
在代码中的引入路径的代码修改如下
const isDev = process.argv[process.argv.length - 1] === 'dev';
const worker_js_path = isDev ? path.join(__dirname, 'worker.js') : path.join(process.resourcesPath,
'app.asar.unpacked/source/worker.js');
const worker = new Worker(worker_js_path);
https://juejin.im/post/5d4387c86fb9a06b2c32708bhttps://www.electron.build/configuration/configuration.html#overridable-per-platform-optionshttps://www.electron.build/configuration/contents#extrares...
写在前面:Electron相关的操作还是不要使用CNPM的操作命令,这样后面会遇到各种问题:比如安装某些依赖的问题;但是原生的NPM命令又很慢,咋怎呢?有办法!使用smart-npm
安装smart-npm
npm install –global smart-npm –registry=https://registry.npm.taobao.org/
———————————-分割线,下面的cnpm替换为npm吧——————————-1、安装electron-builder(注意全局安装
cnpm install -g electron-builder
cnpm install -g e
第一次使用Git命令记录:
liaopingping@LAPTOP-NEE9TOL6 MINGW64 ~
$ git config --global user.name "yuejiul"
liaopingping@LAPTOP-NEE9TOL6 MINGW64 ~
$ git config --global user.email "1498253108@qq.com"
liao...
在了解工作线程的具体用法之前,有必要先想想:工作线程解决了什么问题?
工作线程主要解决的是cpu密集型场景下的问题,由于node只有单个主线程的特性,导致在执行高cpu运算任务时,会有以下的问题:
计算任务阻塞主线程,导致无法响应新的请求
只能单核执行,无法充分利用多核cpu
而工作线程通过开启在主线程中开启新的线程单独执行计算任务,避免了阻塞整个事件循环,使主线程仍然可以继续处理后续的请求。
并且由于是新的线程,可以在其他cpu核心上执行,使得单个进程可以更充分的利用多核cpu。
生成工作线
1、worker_thread通过ShareArrayBuffer或者ArrayBuffer来实现共享内存
ArrayBuffer本质上是通过postMessage()内存移动的方式来使各个worker之间共享数据的,但是一旦转移后,其他的worker就不能使用,也就是同一时间,只能有个worker拿到这块内存区域
run.js
const {Worker, MessageChannel} = require('worker_threads')
const array = new Ar
electron打包一开始时出现error,去解决真的好累,报错一个接一个,而且我这和网上一些bug解决方案还有点不同,不能照抄别人的作业。
本次我使用的electron 打包工具是electron-builder (以后就换其他的试试)
当然也是我学艺不精了 💥
打包正常流程
在说自己错误经历之前,先走一遍可以正确打包的流程吧
为了让流程看起来干净些,创建一个独立的electron项目
使用yarn init命令创建项目,注意需要写明author作者和description描述,后续打包时如
npm install --global smart-npm --registry=https://registry.npm.taobao.org/
1、安装electron-builder(注意全局安装)
cnpm install -g electron-builder
cnpm install -g electron-package
2、在项目目录(my-project)执行打包命令
electron-builder
3、由于网络原因,各种包下载不下来,导致出错
elect
Electron 可以让你使用纯 JavaScript 调用丰富的原生 APIs 来创造桌面应用。你可以把它看作是专注于桌面应用而不是 web 服务器的,io.js 的一个变体。
这不意味着 Electron 是绑定了 GUI 库的 JavaScript。相反,Electron 使用 web 页面作为它的 GUI,所以你能把它看作成一个被 JavaScr...
Worker Thread
Worker Thread 模式介绍
Worker 的意思是工作的人。在Worker Thread 模式里,工人线程将逐个取回任务并进行处理。当所有工作全部完成后,工人线程会等待新的工作到来;
如果从“工人聚集”的来看,该模式也可以称为“线程池”模式;
Worker Thread 使用场景
提高吞吐量:避免启动线程所需要花费的时间;当然,代价是内存空间,因为有多个“工...
vue-cli-plugin-electron-builder 是一个用于将 Vue.js 应用程序打包成 Electron 应用程序的插件。如果在打包时无法识别,可能是由以下原因导致的:
1. 插件没有正确安装,请确保已经正确安装并配置了插件。
2. 项目的配置不正确,请检查 vue.config.js 文件中是否正确配置了 electron-builder 选项。
3. 缺少依赖,请确保已经安装了所有 electron-builder 所需的依赖。
4. 版本不兼容,请确保 vue-cli-plugin-electron-builder 和其他相关库的版本是兼容的。
请尝试检查以上原因,如果仍然无法解决问题,可以查看插件的文档或者在社区寻求帮助。