In What Thread Do Local and Global Variables Execute?
Primary Software Version: 8.6
Primary Software Fixed Version: N/A
Secondary Software: LabVIEW Development Systems>>LabVIEW Full Development System
I am considering using local or global variables; in what thread do variables execute?
A common misunderstanding is that local and global variable operations execute in the UI thread, or require a thread swap to the UI thread - this is not true. The following describes the behavior of local and global variable write and read operations:
When you write to a local or global variable, LabVIEW does not switch to the user interface thread immediately. LabVIEW instead writes the value to the transfer buffer, which is a protected area of memory. The user interface updates at the next scheduled update time. It is possible to update a variable multiple times before a single thread switch or user interface update occurs. This is possible because variables operate solely in the execution thread.
When you read from a local or global variable, the operation will occur in the thread which the VI executes, thus, you can be sure it does not occur in the UI thread by setting the execution system in the VI properties to standard. There is a thread protection mechanism to make sure that no writer of the global is changing the data while you are reading it, but this is done via a mutex, and not by going to the UI thread. However, if the global variable panel is opened, then a message is posted to redraw the global control, and the redraw will happen in the UI thread.
LabVIEW 8.6 Help: VI Execution Speed
Developer Zone Tutorial: Local Variable, Global Variable, Race Conditions
Developer Zone Tutorial: Are LabVIEW global variables good or bad, and when is it OK to use them?
Report Date: 04/14/2006
Last Updated: 04/04/2012
Document ID: 3WDG7J4B