https://www.electronjs.org/ja/docs/latest/tutorial/multithreading • 45 KB fetched Open original page
マルチスレッド | Electron
メインコンテンツへ飛ぶ
Electron ドキュメント API ブログ ツール
* Electron Forge
* Electron Fiddle
コミュニティ
* ガバナンス
* 事例紹介
* リソース
リリース 日本語
* English
* Deutsch
* Español
* Français
* 日本語
* Português
* Русский
* 中文
検索
* はじめよう
* Electron のプロセス
* ベストプラクティス
* サンプル
* ダークモード
* デバイスアクセス
* アプリ内購入
*
* キーボード ショート カット
* ディープリンク
* デスクトップランチャーアクション
*
* Menus
* マルチスレッド
* ネイティブなファイルのドラッグ&ドロップ
* ナビゲーション履歴
* 通知
* オフスクリーンレンダリング
* オンライン/オフライン イベントの検出
* プログレスバー
* 最近使用したドキュメント
*
*
* BrowserWindow が表すファイル
*
* スペルチェッカー
* ウェブ埋め込み
* タスクバーのカスタマイズ
*
* ウインドウのカスタマイズ
* 開発
* Native Node Modules
* 配布方法
* テストとデバッグ
* リファレンス
* コントリビューション
*
* サンプル
* マルチスレッド 目次
マルチスレッド
Web Workers により、JavaScript を OS レベルのスレッドで実行することが可能になります。
マルチスレッド Node.js
Electron の Web Workers 内で Node.js の機能を使用するには、 webPreferences の nodeIntegrationInWorker オプションを true に設定する必要があります。
const win = new BrowserWindow ( {
webPreferences : {
nodeIntegrationInWorker : true
}
} )
nodeIntegrationInWorker は nodeIntegration とは独立して使用できますが、 サンドボックス は true に設定してはなりません。
[!NOTE] This option is not available in SharedWorker s or Service Worker s owing to incompatibilities in sandboxing policies.
利用可能な API
Node.js の組み込みモジュールはすべて Web Workers でサポートされており、 asar アーカイブは Node.js API で読み取ることができます。 しかし、Electron の組み込みモジュールは、マルチスレッド環境では使用できません。
ネイティブ Node.js モジュール
任意のネイティブ Node.js モジュールを Web Workers に直接ロードできますが、そのようにしないことを強く推奨します。 既存のネイティブモジュールのほとんどはシングルスレッド環境を想定して作成されており、Web Workers でそれらを使用するとクラッシュやメモリ破壊につながります。
ネイティブ Node.js モジュールがスレッドセーフであっても、 process.dlopen 関数はスレッドセーフではないため、Web Worker でロードするのは安全ではありません。
ネイティブモジュールを安全にロードする唯一の方法は、Web Workers の起動後にアプリがネイティブモジュールをロードしないようにすることです。
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
* Infrastructure Dashboard
Copyright OpenJS Foundation and Electron contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation , please see our Trademark Policy and Trademark List . Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them. The OpenJS Foundation | Terms of Use | Privacy Policy | Bylaws | Code of Conduct | Trademark Policy | Trademark List | Cookie Policy
Hosting and infrastructure graciously provided by