Read more
For advanced Computer Science programming courses covering operating systems.
The books aim is to give the programmer a solid, basic understanding of threads - what they are, how they work, why they work, why they are useful, and some of the programming issues surrounding their use. A reader should come away with a solid understanding of the fundamentals of multithreading, being able to write credible, modestly complex, threaded programs.
List of contents
1. Introduction.
2. Concepts.
Background: Traditional Operating Systems. What Is a Thread? Kernel Interaction. The Value of Using Threads. What Kind of Programs to Thread? What About Shared Memory? Threads Standards. Performance.
3. Foundations.
Implementation vs. Specification. Thread Libraries. The Process Structure. Lightweight Processes. Solaris Multithreaded Model. System Calls. Signals.
4. Lifecycle.
Thread Lifecycle.
5. Scheduling.
Different Models of Kernel Scheduling. Thread Scheduling. Context Switching. When Should You Care About Scheduling?
6. Synchronization.
Synchronization Issues. Synchronization Variables. A Stoppable Producer/Consumer Example.
7. Complexities.
Complex Locking Primitives. Other Synchronization Variables. Message Queues. Cross-Process Synchronization Variables. Initialization and Destruction. Synchronization Problems.
8. TSD.
Thread-Specific Data. Global Variables, Constants, and Cheating.
9. Cancellation.
What Cancellation Is. A Cancellation Example. Using Cancellation. Cancellation Safety. Simple Polling.
10. Signals.
Signals in UNIX. The Solaris Implementation of Signal Handling. Don't Use Signal Handlers!
11. Details.
Attribute Objects. POSIX Thread Ids. Win32 Thread IDs and Thread Handles. Initializing Your Data: pthread_once(). POSIX Namespace Restrictions. Return Values and Error Reporting. Constants Comments. Pthread Futures. Pthread Extensions. Comparing the OS/2, Win32, and POSIX Libraries.
12. Libraries.
The Threads Library. Multithreaded Kernels. Are Libraries Safe? Stub Functions in libc. New Semantics for System Calls. Are Libraries Safe? Threads Debugger Interface. Mixing Solaris Pthreads and UI Threads. Comparisons of Different Implementations.
13. Design.
Making Libraries Safe and Hot. Manipulating Lists. Program Design.
14. Languages.
C. C++. Java. Fortran. Ada. Pascal. Smalltalk. Lisp. Eiffel. Commercial Products. Public Pthreads Implementations.
15. Tools.
Static Lock Analyzer. Using a Thread-Aware, Graphical Debugger. Debug Mutexes. Protocol. TNFview.
16. Performance.
Optimization: Objectives and Objections. CPU Time, I/O Time, Contention, Etc. Limits on Speedup. Benchmarks and Repeatable Testing. The Lessons of NFS.
17. Hardware.
Types of Multiprocessors. Bus Architectures. Memory Systems.
18. Examples.
Threads and Windows. Socket Server (Master/Slave Version). Socket Server (Producer/Consumer Version). Other Programs on the Web.
Appendix A. Internet.
Threads Newsgroup. Code Examples. Vendor's Threads Pages. Threads Research. The SPILT Package for UI/POSIX Compatibility. Freeware Tools. Other Pointers. The Authors on the Net.
Appendix B. Books.
Threads Books. Related Books.
Appendix C. Timings.
Appendix D. Mistakes.
Appendix E. APIs.
Function Descriptions. Pthread Functions. Pthread Attributes Objects. POSIX Realtime Scheduling. Mutexes. Mutex Attributes Objects. Condition Variables. Condition Variable Attributes Objects. Cancellation Functions. Thread-Specific Data Functions. Semaphores. Signal Functions. Stdio.
Glossary.
Index.
Summary
Aims to give the programmer an understanding of threads - what they are, how they work, why they work, why they are useful, and some of the programming issues surrounding their use. This book is intended for advanced Computer Science programming courses covering operating systems.