The pervasiveness of multi-core processors affects a large spectrum of systems from embedded and general-purpose to high-end computing systems. This book assists the programmers in mastering the efficient programming of multi-core systems, which is of paramount importance for the software-intensive industry towards a more productive product-development cycle. All programmers of modern computing systems are faced with the programming of multicore and many-core systems. This book will help readers learn the state-of-the-art methods and tools for programming such systems.