-
Notifications
You must be signed in to change notification settings - Fork 9
Architecture Task @ja
plsenseのワーカープロセスの管理について
ワーカープロセスとは、BuildWorker/FindWorkerのプロセスを差します。 WorkServerは、クライアントから以下の発生の通知を受けることで、ワーカープロセスを生成します。
- ファイルが開かれた
- カレントのファイルが変わった
- ファイルが更新された
また、ワーカープロセスからの要求によって、別のワーカープロセスを生成します。
一つのタスクには、一つのワーカープロセスが割り当てられます。 WorkServerは、ワーカープロセスの生成が必要になった時、そのタスクをキューに登録します。 積み上げられたキューから、最大maxtasks個のタスクのワーカープロセスを生成し、それらが終了するのを待ちます。 ワーカープロセスからの通知によって、そのタスクの終了を検知します。 タスクの終了などにより、後続のタスクがキューから取り出されて実行されます。
ファイルが開かれたり更新された場合、そのファイルに対してBuildWorkerのタスクを登録します。 BuildWorkerへの指定はそれぞれ以下のようになります。
ファイルが開かれた場合、再帰的な実行を指定します。 この場合、BuildWorkerは、そのファイルのモジュールがuse/requireしているモジュールについての ビルド要求をWorkServerに行います。
ファイルが更新された場合、強制的な実行を指定します。 通常、BuildWorkerは、既にビルド済みの場合、何もせず終了しますが、 この場合には、ビルド済みでも再度ビルドします。
ファイルが開かれたり、カレントのファイルが変わった場合、そのファイルが属するプロジェクトを 調査し、それが現在のプロジェクトと違う場合、新しいプロジェクトに属するモジュールを検索するための FindWorkerのタスクを登録します。 FindWorkerのタスクが実行されている間は、後続のタスクは実行されず、FindWorkerのタスクの終了を待ちます。