Threading methodology: principles and practice
Types of Operating System Definition of Multiprocessing and Multitasking: Just as multiprocessing operating systems can perform more than one task concurrently by running more than a single process, a process can perform more than one task by running more than a single thread.

by Vasanth Tovinkere. Intel Corp.

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-processing). Such "large-grain" resource sharing is enabled by operating systems without any additional information from the applications or processes. All these processes can potentially execute concurrently, with the CPU (or CPUs) multiplexed among them. Newer operating systems provide mechanisms that enable applications to control and share machine resources at a finer grain—, that is, at the threads level. Just as multiprocessing OSes can perform more than one task concurrently by running more than a single process, a process can perform more than one task by running more than a single thread. 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.

As with most programming techniques, the primary goal of threading is to allow the user to take the best advantage of the system resources. Concurrency increases the complexity of the design, testing and maintenance of the code while offering increased throughput on single or multiprocessor machines. Threading represents a major step forward from the time when concurrency was implemented using interprocess communication. Overhead from interprocess communication can have a negative impact on performance. By threading an application some of this complexity can be reduced, especially with respect to interprocess communication. In addition threading retains the ability to scale the level of parallelism with an incremental increase in system resource requirements. However, threading an application may introduce errors that are hard to detect and reproduce. A majority of the effort in threading applications falls in the design, implementation and the debug phases of the development cycle. Threading effort depends on your experience in threading applications and your knowledge of the application that is being threaded.

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[1].

[1] 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 www.intel.com/info/hyperthreading for information.

Read the rest of this whitepaper: click link, below.

© 2005 Intel Corp.


Subscribers who liked this article also read:
Integrating Enterprise Applications Backgrounder
Enterprise Application Integration (EAI) is a serious consideration ...
Multithreaded technology and multi-core processors
by Craig Szydlowski, Infrastructure Processor Division, Intel Corp. ...
Boosting Cryptography Performance with Intel® Libraries
by Muneesh Nagpal, server applications engineer, Core Software Divisio...

If you're interested in this topic, these articles may be helpful:

On-demand Webcasts for Threading and Multi-Core Processing
First there were multi-processor systems and Hyper-Threading Technolog...
Upgrading from Linux to Solaris
When "good enough" is no longer good enough Like many IT ve...
Intel® Threading Tools Boost Performance for CPU Cycle-Hungry Digital Artists
Introduction Intel ® Threading Tools help Autodesk optimize its M...
Combining Linux Message Passing and Threading in High-Performance Computing
by Andrew Binstock, principal analyst, Pacific Data Works LLC. Intel C...
Preparing for Hyper-Threading and Dual Core Technologies
Subscribe to Intel Software Dispatch and see the complete article I...

Related Jobs:

Help Desk (Junior IT Analyst) #R-257-05 - DC - Washington - McDonald Bradley, Inc.
R-257-05 Help Desk (Junior IT Analyst) Sep 14, 2005 Washington,Distr...
Engineering Analyst #249780 - GA - Alpharetta - Radiant Systems, Inc
GENERAL POSITION SUMMARY: This position is responsible for approva...
Help Desk JR Technician #R-262-05 - VA - Arlington - McDonald Bradley, Inc.
R-262-05 Help Desk JR Technician Sep 14, 2005 Arlington,Virginia ...
Help Desk JR Technician #R-264-05 - VA - Arlington - McDonald Bradley, Inc.
R-264-05 Help Desk JR Technician Sep 14, 2005 Arlington,Virginia ...
Security Architect #54561 - CA - Sacramento - EML Incorporated
Duration: 6 months The Security Architect will be responsible for c...
Senior Software Engineer, Transaction Event and Statistics Server - CA - Palo Alto - WILY Technology, Inc.
Senior Software Engineer, Transaction Event and Statistics Server ...
Help Desk JR Technician #R-261-05 - VA - Arlington - McDonald Bradley, Inc.
R-261-05 Help Desk JR Technician Sep 14, 2005 Arlington,Virgini...
Software Engineer, System Software and Firmware - CA - Mountain View - Google
We are looking for experienced system software engineers with a strong...
Help Desk Lead #R-256-05 - VA - Arlington - McDonald Bradley, Inc.
R-256-05 Help Desk Lead Sep 14, 2005 Arlington,Virginia Send J...
Programming Writer #132618 - WA - Redmond - Microsoft Corporation
Do you like to program? Do you like to write? Are you excited by Inter...