SOLFIND
Web Lens
Portal home

多线程 | Electron

https://www.electronjs.org/zh/docs/latest/tutorial/multithreading • 44 KB fetched
Open original page


多线程 | Electron 跳转到主内容 Electron 文档 应用开发接口(API) 博客 工具 * Electron Forge * Electron Fiddle 社区 * 治理 * 案例展示 * 资源 版本发布 中文 * English * Deutsch * Español * Français * 日本語 * Português * Русский * 中文 搜索 * 开始上手 * Electron 中的流程 * 最佳实践 * 示例 * Dark Mode * 设备访问 * 应用程序内购 * * 键盘快捷键 * 深度链接 (Deep Links) * 桌面启动器快捷操作 * * Menus * 多线程 * 原生文件拖 & 放 * 导航历史 * 通知(Notifications) * 离屏渲染 * 在线/离线事件探测 * 进度条 * 最近的文件 * * * 在 BrowserWindow 中展示文件 * * 拼写检查器 * Web 嵌入 * 任务栏自定义 * * 自定义窗口 * 开发 * Native Node Modules * 分发 * 检测和调试 * 引用 * 参与贡献 * * 示例 * 多线程 在本页面 多线程 通过 Web Workers ,可以实现用操作系统级别的线程来跑JavaScript 多线程的Node.js ​ 可以在Electron的Web Workers里使用Node.js的特性。要用的话,需把 webPreferences 中的 nodeIntegrationInWorker 选项设置为 true const win = new BrowserWindow ( { webPreferences : { nodeIntegrationInWorker : true } } ) nodeIntegrationInWorker 可以独立于 nodeIntegration 使用,但 sandbox 必须不能设置为 true note 由于与沙盒策略不兼容,该选项在 SharedWorker 或 Service Worker 中并不可用。 可用的API ​ Web Workers支持Node.js的所有内置模块,而且 asar 档案也仍通过Node.js的API来读取。 不过所有的Electron内置模块不可以用在多线程环境中。 原生Node.js模块 ​ 在Web Workers里可以直接加载任何原生Node.js模块,但不推荐这样做。 大多数现存的原生模块是在假设单线程环境的情况下编写的,如果把它们用在Web Workers里会导致崩溃和内存损坏。 请注意, 即使原生Node.js模块如果考虑到了线程安全问题, 但在 Web Worker中加载它仍然不安全, 因为 process.dlopen 函数并没有考虑线程安全。 现在安全顺利地加载原生模块的唯一办法,就是确保在Web Workers启动后app不加载原生模块。 process . dlopen = ( ) => { throw new Error ( 'Load native module is not safe' ) } const worker = new Worker ( 'script.js' ) 编辑此页面 上一个 键盘快捷键 下一个 原生文件拖 & 放 * 多线程的Node.js * 可用的API * 原生Node.js模块 文档 * 入门指南 * API 参考 清单 * 性能 * 安全 工具 * Electron Forge * Electron Fiddle 社区 * 治理 * 资源 * Discord * Bluesky * X * Mastodon * Stack Overflow 更多 * GitHub * Open Collective * 基础看板 版权所有 OpenJS Foundation 及 Electron 贡献者。保留所有权利。 OpenJS Foundation 已注册商标并使用商标。如需查看 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表 。未在 OpenJS Foundation 商标列表 中标明的商标和标志,均为其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或得到它们的认可。 OpenJS Foundation | 使用条款 | 隐私政策 | 章程 | 行为准则 | 商标政策 | 商标列表 | Cookie 政策 Hosting and infrastructure graciously provided by

Links found on this page

  1. 跳转到主内容 [direct]
  2. Electron [direct]
  3. 文档 [direct]
  4. 应用开发接口(API) [direct]
  5. 博客 [direct]
  6. Electron Forge [direct]
  7. Electron Fiddle [direct]
  8. 治理 [direct]
  9. 案例展示 [direct]
  10. 资源 [direct]
  11. 版本发布 [direct]
  12. English [direct]
  13. Deutsch [direct]
  14. Español [direct]
  15. Français [direct]
  16. 日本語 [direct]
  17. Português [direct]
  18. Русский [direct]
  19. Electron 中的流程 [direct]
  20. 最佳实践 [direct]
  21. 示例 [direct]
  22. Dark Mode [direct]
  23. 设备访问 [direct]
  24. 应用程序内购 [direct]
  25. 键盘快捷键 [direct]
  26. 深度链接 (Deep Links) [direct]
  27. 桌面启动器快捷操作 [direct]
  28. Menus [direct]
  29. 原生文件拖 & 放 [direct]
  30. 导航历史 [direct]
  31. 通知(Notifications) [direct]
  32. 离屏渲染 [direct]
  33. 在线/离线事件探测 [direct]
  34. 进度条 [direct]
  35. 最近的文件 [direct]
  36. 在 BrowserWindow 中展示文件 [direct]
  37. 拼写检查器 [direct]
  38. Web 嵌入 [direct]
  39. 任务栏自定义 [direct]
  40. 自定义窗口 [direct]
  41. 开发 [direct]
  42. Native Node Modules [direct]
  43. 分发 [direct]
  44. 检测和调试 [direct]
  45. 引用 [direct]
  46. 参与贡献 [direct]
  47. Web Workers [direct]
  48. SharedWorker [direct]
  49. Service Worker [direct]
  50. 编辑此页面 [direct]
  51. 安全 [direct]
  52. Discord [direct]
  53. Bluesky [direct]
  54. X [direct]
  55. Mastodon [direct]
  56. Stack Overflow [direct]
  57. GitHub [direct]
  58. Open Collective [direct]
  59. 基础看板 [direct]
  60. OpenJS Foundation [direct]
  61. 商标政策 [direct]
  62. 商标列表 [direct]
  63. 使用条款 [direct]
  64. 隐私政策 [direct]
  65. 章程 [direct]
  66. 行为准则 [direct]
  67. Cookie 政策 [direct]