Threaded
DescriptionThreaded[.<type>] <variable[.<type>]> [= <constant expression>] [, ...]
Threaded allows to create a thread based persistent variable, arrays (except multi-dimensional arrays), lists or maps. This means every thread will have its own version of the object. This is only useful when writing multithreaded programs. If a type is specified after Threaded, the default type is changed for this declaration.
Each variable can have a default value directly assigned to it, but it has to be a constant value. Threaded initialization is done at thread first start. That implies when declaring and assigning a threaded variable in the same time, the variable is assigned for all threads. See example 2. When declaring a threaded array, the dimension parameter has to be a constant value.
A Threaded object can't be declared in a procedure, its scope is always global.
Example: 1 With variables
Threaded Counter
Counter = 128
Procedure Thread(Parameter)
Debug Counter ; Will display zero as this thread doesn't have used this variable for now
Counter = 256
Debug Counter ; Will display 256
EndProcedure
Thread = CreateThread(@Thread(), 0)
WaitThread(Thread) ; Wait for thread ending
Debug Counter ; Will display 128, even if Counter has been changed in the thread
Example: 2 All threads
Threaded Counter = 128 ; Defined for all threads
Procedure Thread(Parameter)
Debug Counter ; Will display 128 because a programme started, starts a thread too
Counter = 256
Debug Counter ; Will display 256
EndProcedure
Thread = CreateThread(@Thread(), 0)
WaitThread(Thread) ; Wait for thread ending
Debug Counter ; Will display 128, even if Counter has been changed in the thread