Thinking in C++ Vol 2 - Practical Programming |
Prev |
Home |
Next |
Objects provide a way to divide a program into independent
sections. Often, you also need to partition a program into separate,
independently running subtasks.
Using multithreading, each of these independent
subtasks is driven by a thread of execution, and you program as if each
thread has the CPU to itself. An underlying mechanism is dividing up the CPU
time for you, but in general, you don t need to think about it, which helps to
simplify programming with multiple threads.
A process is a self-contained program running within
its own address space. A multitasking operating system can run more than
one process (program) at a time, while making it look as if each one is
chugging along on its own, by periodically switching the CPU from one task to
another. A thread is a single sequential flow of control within a
process. A single process can thus have multiple concurrently executing
threads. Since the threads run within a single process, they share memory and
other resources. The fundamental difficulty in writing multithreaded programs
is coordinating the use of those resources between different threads.
There are many possible uses for multithreading, but you ll
most often want to use it when you have some part of your program tied to a
particular event or resource. To keep from holding up the rest of your program,
you create a thread associated with that event or resource and let it run
independently of the main program.
Concurrent programming is like stepping into an entirely new
world and learning a new programming language, or at least a new set of language
concepts. With the appearance of thread support in most microcomputer operating
systems, extensions for threads have also been appearing in programming
languages or libraries. In all cases, thread programming:
1. Seems mysterious and requires a shift in the way you think about
programming.
2. Looks similar to thread support in other languages. When you understand
threads, you understand a common tongue.
Understanding concurrent programming is on the same order of
difficulty as understanding polymorphism. If you apply some effort, you can
fathom the basic mechanism, but it generally takes deep study and understanding
to develop a true grasp of the subject. The goal of this chapter is to give you
a solid foundation in the basics of concurrency so that you can understand the
concepts and write reasonable multithreaded programs. Be aware that you can
easily become overconfident. If you are writing anything complex, you will need
to study dedicated books on the topic.
Thinking in C++ Vol 2 - Practical Programming |
Prev |
Home |
Next |