Threads and Concurrent Programming
Threads may be seen as methods that execute at "the same time" as other methods. Normally, we think sequentially when writing a computer program. From this perspective, only one thing executes at a time. However, with today's multi-core processors, it is possible to literally have several things going on at the very same time while sharing the same memory. There are lots of ways that this is done in the real world, and this chapter goes over them in a way that you can apply to your own projects.
14.6 CASE STUDY: Cooperating Threads
For some applications it is necessary to synchronize and coordinate the
behavior of threads to enable them to carry out a cooperative task. Many
cooperative applications are based on the producer/consumer model. According to this model, two threads cooperate at producing and consuming
a particular resource or piece of data. The producer thread creates some
message or result, and the consumer thread reads or uses the result. The
consumer has to wait for a result to be produced, and the producer has to
take care not to overwrite a result that hasn’t yet been consumed. Many
types of coordination problems fit the producer/consumer model.
One example of an application for this model would be to control the
display of data that is read by your browser. As information arrives from the Internet, it is written to a buffer by the producer thread. A separate consumer thread reads information from the buffer and displays it
in your browser window. Obviously, the two threads must be carefully