メインコンテンツへスキップ
バージョン: 0.21

エージェント

エージェントは、タスクをWebワーカーにオフロードする方法です。

エージェントを並行して実行するために、Yewはweb-workersを使用します。

ライフサイクル

agent lifecycle diagramagent lifecycle diagram

エージェントの種類

リーチ

  • パブリック - パブリックエージェントは、任意の時点で最大1つのインスタンスが存在します。ブリッジは、Webワーカーですでに生成されたエージェントを生成または接続します。このエージェントに接続されたブリッジがない場合、エージェントは消滅します。

  • プライベート - 新しいブリッジごとにWebワーカーに新しいエージェントを生成します。これは、ブラウザーと通信する共有されているが独立した動作をコンポーネントから移動するのに適しています。接続されたブリッジがドロップされると、エージェントは消滅します。

  • グローバル(WIP)

エージェントとコンポーネント間の通信

ブリッジ

ブリッジを使用すると、エージェントとコンポーネント間で双方向の通信が可能になります。また、ブリッジを使用すると、エージェント同士が通信できるようになります。

関数コンポーネントでブリッジを作成するために、use_bridgeフックも提供されています。

ディスパッチャ

ディスパッチャを使用すると、コンポーネントとエージェントの間で一方向の通信が可能になります。ディスパッチャを使用すると、コンポーネントからエージェントにメッセージを送信できます。

オーバーヘッド

エージェントはWebワーカー(つまり、プライベートとパブリック)を使用します。送信および受信するメッセージにはシリアル化オーバーヘッドが発生します。エージェントはbincodeを使用して他のスレッドと通信するため、コストは単に関数を呼び出すよりも大幅に高くなります。

さらに読む

  • web_worker_fibの例は、コンポーネントがエージェントとの間でメッセージを送受信する方法を示しています。