Multithreading is the capability of the operating system to run more than one program at one time. In the context of an individual program such as ATEasy, multithreading is the capability of a program to do more than one thing at a time. Under Win32, individual running applications are called "processes," and individual paths of execution within each application are called "threads." Applications can run more than one process, and processes can have multiple threads. This is highly useful because a program that has several threads of execution can, for example, wait for user input using one thread, and perform calculations or I/O in the background using other threads.
At the same time, threads have their dangers. A thread has access to all of the memory, variables, and resources of the main program. Multiple threads of execution can conflict with one another over shared resources or their dependency on one another. This can cause unpredictable results, or even a crash. For this reason, Win32 has "synchronization objects" -- special types of objects which can arbitrate among threads. These objects can limit access to a resource to a single thread, and in this way prevent conflicts. They can also help the programmer to assign different priorities to threads, and in this way make sure that threads execute in a predictable order.
The ATEasy programming language supports multiple threads of execution. ATEasy's threads are identical in nature and function to Win32 threads. ATEasy has a full set of synchronization objects and internal library routines for creating, prioritizing, and destroying threads.
Furthermore ATEasy provides a window, Threads Window, to view mutil-threads during debugging. When a program is paused, you can activate the window to see each thread running and view each thread's stack as well as current location.