Two leading software engineers show you exactly how to make the most of Windows NT multithreading. Step by step, you'll learn the underlying concepts of multithreading-concepts that also apply in UNIX, 0S/2, and other multithreading environments. Then you'll learn how to use Windows NT implementation of multithreading, including Windows NT processes and threads, thread management, synchronization, scheduling, and priorities. The authors present practical solutions for the traditional problems of multithreading, including resource sharing, deadlocks, and race conditions. You'll learn the most effective ways to introduce threads into existing applications, and how to use threads to build highly-efficient distributed applications. The authors compare and contrast several thread-package implementations and illustrate various models for multithreaded programming. Finally, the authors explain the concept and construction techniques of monitors - a useful abstraction for multithreaded programs.