How Many Threads Does LabVIEW Allocate?

Updated Sep 14, 2022

Reported In

Software

  • LabVIEW Base
  • LabVIEW

Issue Details

How many threads does LabVIEW allocate?

Solution

Thread allocation in LabVIEW is dynamic, and there is no single number that answers this question. There are several different types of threads that LabVIEW allocates:
 
  • One user interface thread, used for screen drawing and keyboard/mouse input. This thread is also used for certain types of VI execution, such as property nodes, thread-unsafe CINs and DLLs, etc.
  • A pair of timer threads, used internally by LabVIEW. (Windows 95/NT allocates one additional thread used internally.)
  • Twenty execution threads (per CPU in your system). See below for more details on this.
  • On Windows 95/NT, threads are dynamically allocated for certain operations using the ActiveX client interface to control LabVIEW.
So, for a single processor system, 23 or 24 threads are allocated when the application starts. If you are using the ActiveX client interface, more may be allocated while running your VIs.

Additional Information

A note about the execution threads:
LabVIEW has five "execution systems", and each execution system allocates threads for four different normal priorities. This accounts for twenty threads, not counting the user interface thread, which can also be used for execution. We allocate the execution threads based on how many processors you have in your system, so a dual processor computer will have forty execution threads plus the other threads mentioned above. 

A note about priorities: 
Subroutine VIs always use the execution system of their caller, since staying in the same execution system is the most efficient. The "background priority" does not normally have threads allocated for it. VIs running at this priority will use the next higher priority threads when nothing else is available to run.

Advanced users can adjust some of the thread allocation settings by running threadconfig.vi. This can be found by searching your computer for sysinfo.llb or by following the (default) file path for this VI: 

C:\Program Files (x86)\National Instruments\LabVIEW 20XX\vi.lib\Utility\sysinfo.llb\threadconfig.vi.