Each running thread has its own set of variables of the expression evaluator. Only variables whose name begins with a _ (underscore character) or hidden variables (cf. 7) are global and can be used by all threads with the same meaning. So the same variable names can be used in different threads and contain distinct values in distinct threads, provided that their names does not begin with a _ . The global variables may be used by threads to communicate with each other.