Skip to content

Architecture Task @ja

Hiroaki Otsu edited this page Apr 13, 2014 · 4 revisions

plsenseのワーカープロセスの管理について

ワーカープロセスとは、BuildWorker/FindWorkerのプロセスを差します。 WorkServerは、クライアントから以下の発生の通知を受けることで、ワーカープロセスを生成します。

  • ファイルが開かれた
  • カレントのファイルが変わった
  • ファイルが更新された

また、ワーカープロセスからの要求によって、別のワーカープロセスを生成します。

タスクキュー

一つのタスクには、一つのワーカープロセスが割り当てられます。 WorkServerは、ワーカープロセスの生成が必要になった時、そのタスクをキューに登録します。 積み上げられたキューから、最大maxtasks個のタスクのワーカープロセスを生成し、それらが終了するのを待ちます。 ワーカープロセスからの通知によって、そのタスクの終了を検知します。 タスクの終了などにより、後続のタスクがキューから取り出されて実行されます。

BuildWorkerの実行

ファイルが開かれたり更新された場合、そのファイルに対してBuildWorkerのタスクを登録します。 BuildWorkerへの指定はそれぞれ以下のようになります。

ファイルが開かれた場合、再帰的な実行を指定します。 この場合、BuildWorkerは、そのファイルのモジュールがuse/requireしているモジュールについての ビルド要求をWorkServerに行います。

ファイルが更新された場合、強制的な実行を指定します。 通常、BuildWorkerは、既にビルド済みの場合、何もせず終了しますが、 この場合には、ビルド済みでも再度ビルドします。

FindWorkerの実行

ファイルが開かれたり、カレントのファイルが変わった場合、そのファイルが属するプロジェクトを 調査し、それが現在のプロジェクトと違う場合、新しいプロジェクトに属するモジュールを検索するための FindWorkerのタスクを登録します。 FindWorkerのタスクが実行されている間は、後続のタスクは実行されず、FindWorkerのタスクの終了を待ちます。

Clone this wiki locally