This book introduces the fundamental concepts necessary for implementing the multithreading technology from scratch. The presentation stresses the fundamentals of concurrent programming and exploiting the complete potential of parallel processing. The book is meant to be used as a step by step practical programming guide to implement the multithreading technology and make efficient use of execution time.