Threading Methodology: Principles and Practices

Published:04/30/2010   Last Updated:04/30/2010


Introduction

Today's operating systems strive to make the most efficient use of a computer's resources. Most of this efficiency is gained by sharing the machine's resources among several tasks (multi-tasking). This "large-grained" resource sharing is enabled by all operating systems without any additional information from the applications themselves. Newer operating systems, however, also provide mechanisms that allow the application to control and share machine resources at a finer degree of granularity (threads). This document discusses how the use of threads can improve application performance, responsiveness, and throughput. It also presents a methodology that enables a developer to thread a serial application. Like most programming techniques, the primary goal of threading is to allow the user to take the best advantage of the system resources.

This white paper contains several references to the Intel® Pentium® 4 processor. When used in conjunction with Hyper-Threading Technology, the correct terminology is the Intel® Pentium® 4 Processor with HT Technology¹.

¹ Hyper-Threading Technology requires a computer system with an Intel® Pentium® 4 processor at 3.06 GHz or higher, a chipset and BIOS that utilize this technology, and an operating system that includes optimizations for this technology. Performance will vary depending on the specific hardware and software you use. See http://www.intel.com/technology/platform-technology/hyper-threading/ for information.


Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804