【Node.js24.x】MessagePort::MessagePort()関数の使い方
MessagePort関数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
MessagePort関数は、Node.jsのworker_threadsモジュールにおいて、異なるJavaScript実行コンテキスト間でメッセージを安全に送受信するための通信ポート機能を提供します。この機能は、主にメインスレッドとワーカースレッド間、あるいは複数のワーカースレッド間でデータをやり取りする際に利用されます。
通常、MessagePortはMessageChannelクラスのインスタンスを通じて生成されるMessagePortオブジェクトとして存在します。MessageChannelは、互いに接続された二つのMessagePort、すなわちport1とport2のペアを作成し、これらが通信経路の両端を形成します。
一方のポートのpostMessage()メソッドを使用してデータを送信すると、もう一方のポートで'message'イベントとして非同期にデータを受信できます。このイベント駆動型のメカニズムにより、スレッド間で安全かつ効率的なデータ交換が可能となります。
MessagePortの利用は、共有メモリを使わずに並行処理を実現するため、データ競合のリスクを回避し、プログラムの安全性と堅牢性を高めます。Node.jsアプリケーションのパフォーマンス向上や応答性の維持に貢献する、並行処理の基盤となる重要な要素の一つです。
構文(syntax)
1const { MessageChannel } = require('node:worker_threads'); 2const { port1, port2 } = new MessageChannel(); 3 4port2.on('message', (message) => { 5 // Process the received message 6}); 7 8port1.postMessage('data'); 9 10port1.start(); 11port1.close();
引数(parameters)
引数なし
引数はありません
戻り値(return)
MessagePort
MessagePortクラスのコンストラクタです。新しいMessagePortオブジェクトを生成します。