# subWorker Types

{% hint style="info" %}
**Good to know**

The images in this section are taken from the [Workers Fundamentals](https://docs.workersforlabview.io/getting-started/example-projects) example project.
{% endhint %}

## Statically-Linked subWorkers

Whenever you add a Worker to another Worker using the [Create/Add Worker](https://docs.workersforlabview.io/workers-tools/workers-tools-menu/create-add-worker) tool, you will be adding the Worker as a statically-linked subWorker.

The Main VI of a statically-linked subWorker will appear below the QMH of the Worker that you are adding the subWorker to, as shown below.

![Main VIs of statically-linked subWorkers located below a Worker's QMH (Workers Fundamentals example project)](https://2767648102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZWihGdeYUalj239OUdAB%2Fuploads%2F3M166rRMfdp5nsS5dLhK%2Fimage.png?alt=media\&token=f962b0f1-3200-4e17-a265-7a0d4c99b788)

Within an application's Worker call-chain hierarchy diagram, you can identify statically-linked subWorkers as subWorkers **without** an outer dashed line. The Workers in the red box below represent the statically-linked subWorkers in the block diagram above.

![Statically-linked subWorkers of Worker A.](https://2767648102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZWihGdeYUalj239OUdAB%2Fuploads%2Fe4SgBEIUnT7SErEdynoO%2Fimage.png?alt=media\&token=d0b5c0a5-ae29-4d8a-8b56-4f1643ce2273)

## Dynamically Loaded subWorkers

Workers can also be integrated into a Worker's call-chain hierarchy at run-time, by loading a Worker dynamically from another Worker by using the Workers palette VI: *Dynamically Load Worker v2.vi.* This VI is used within the [Dynamically Load Worker Public API](https://docs.workersforlabview.io/workers-tools/workers-tools-menu/public-api-builder#create-dynamically-load-worker-vi) VIs. An example of a Worker that is loaded dynamically at run-time is shown in the image below. Here you can see that Worker D is loaded dynamically by another Worker, and its returned Worker object is stored in the [Main Data Wire](https://docs.workersforlabview.io/important-terms#worker-main-data-wire) of the Caller.

![Worker D is dynamically loaded from Worker A (Workers Fundamentals example project)](https://2767648102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZWihGdeYUalj239OUdAB%2Fuploads%2FbbpTmsfXsVXDV6G9gHCU%2Fimage.png?alt=media\&token=b8c54a3a-e177-48dc-9b2f-f038c09c5ea6)

Within a Workers call-chain hierarchy diagram, you can identify a dynamically loaded subWorker as a subWorker **with** an outer dashed line. The Worker in the red box below represents the dynamically loaded subWorker in the block diagram above.

![Dynamically loaded subWorker of Worker A](https://2767648102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZWihGdeYUalj239OUdAB%2Fuploads%2FJe0Gb2VjbLh6EPifnBoZ%2Fimage.png?alt=media\&token=aa7dc7a9-4829-4602-8442-b8a60736a512)

{% hint style="info" %}
Dynamically loaded Workers are loaded with LabVIEW's *Start Asynchronous Call* node, using flags: 0x100 flag (Call and Collect) and 0x40 (Enable simultaneous calls on reentrant VIs).
{% endhint %}
