Multithreaded Programming With PThreads

4.25 avg rating
( 4 ratings by Goodreads )
 
9780136807292: Multithreaded Programming With PThreads

This book will give the UNIX and NT programmer a solid, basic understanding of threads -- and the powerful new POSIX Pthreads library. The book begins with an overview of the need for, and evolution of multithreading. Understand how threads are constructed, and how operating systems like Solaris(r) provide support for them. Learn the fundamentals of thread scheduling and synchronization, understanding the trade-offs involved in using synchronization variables. Learn how to dispose of (cancel) unwanted threads; and manage asynchronous events via signaling. The book includes detailed coverage of writing and compiling multithreaded programs, including sample applications, libraries, design choices, performance optimization and hardware considerations. For all experienced C, UNIX and NT programmers who need to understand the new Pthreads library.

"synopsis" may belong to another edition of this title.

Review:

Multithreading lets programs do two or more tasks at once, and it can let programmers take advantage of the latest symmetric multiprocessor (SMP) systems in Unix. But to get this performance boost, you'll want to read Multithreaded Programming with Pthreads first. It delivers both the concepts behind multithreaded design along with real-world source code excerpts that show you how to apply the concepts to real-world Unix projects.

This book begins with the evolution of the various libraries that support multithreading. In the ecumenical spirit of Unix, the authors cover all the bases of Portable Operating System Interface for Unix (POSIX) libraries, including Linux, DEC, IBM, HP, and Sun Solaris, and even add-ons to NT and OS/2 for their POSIX support. The authors acknowledge that there may be variations in your version of Unix, but suggest that POSIX threads have good support from most vendors.

The authors then cover the basics of threads and how they run in today's Unix. The authors turn quickly to their implementation in variants of Unix, including Lightweight Processes (LWPs). They then cover the lifecycles of threads and how they are scheduled.

The primary focus in Multithreaded Programming with Pthreads is on how to make threads work together effectively. Multithreading involves a host of design issues, from patterns of how to organize threading in a program (with models such as the Producer/Consumer or the Master/Slave) to how to coordinate work done by multiple threads with facilities such as mutexes, critical sections, semaphores, and more arcane solutions (such as monitors and spin locks). The authors guide the reader to all the possibilities here, including suggestions on program design.

The real-world focus here involves some sample code (in C), a quick tour of the issues in using Pthreads with other programming languages, and some excellent material on benchmarking multithreaded code. The authors' ideas on when to use and when to avoid Pthreads are also useful. Though Pthreads will not work everywhere, they have a lot of potential to enhance the performance of today's software. This technical--and quite engaging--text can show you if Pthreads are in the cards for your next Unix programming project.

From the Inside Flap:

Preface

Today, there are three primary sets of multithreading (MT) libraries: the “standards-based” libraries (all of the UNIX¨ implementations and VMS, which are moving to POSIX), the OS/2¨ library, and the Win32 library. (The NT and OS/2 libraries are fairly similar, which should not be too surprising. NT did start life as OS/2, version 2, after all.) Although the APIs and implementations differ significantly, the fundamental concepts are the same. The ideas in this book are valid for all three; the details of the APIs differ. All the specific discussion in this book focuses on the POSIX multithreading model, with comparisons to OS/2 and Win32 throughout.
A frank note about our motivation is in order here. We have slaved away for countless hours on this book because we're propeller-heads who honestly believe that this technology is a superb thing and that the widespread use of it will make the world a better place for hackers like ourselves.
Your motivations for writing MT programs? You can write your programs better and more easily, they'll run faster, and you'll get them to market more quickly, they'll have fewer bugs, you'll have happier programmers, customers, and higher sales. The only losers in this game are the competitors, who will lag behind you in application speed and quality.
MT is here today. It will soon be ubiquitous. As a professional programmer, you have an obligation to understand this technology. It may or may not be appropriate for your current project, but you must be able to make that conclusion yourself. This book will give you what you need to make that decision.
Welcome to the world of the future!
Who Should Use This Book

This book aims to give the programmer or technical manager a solid, basic understanding of threads—what they are, how they work, why they are useful, and some of the programming issues surrounding their use. As an introductory text, it does not attempt a deep, detailed analysis. (At present, there are no deep, detailed analyses!) After reading this book the reader should have a solid understanding of the fundamentals, be able to write credible, modestly complex, threaded programs and have the understanding necessary to analyze their own programs and determine the viability of threading them. This book is written with the experienced C/UNIX programmer in mind. A non-UNIX programmer will find a few of the details unfamiliar, but the concepts clear. A non-C programmer will find the code fragments and API descriptions mildly challenging, though possible to decipher, while the concepts should be clear. A technically minded nonprogrammer should be able to follow most of the concepts and understand the value of threads. A nontechnical person will not get much from this book.
This book does not attempt to explain the usage of the Win32 or OS/2 APIs. It does contrast them to the POSIX API in order to give the POSIX programmer a feeling for what kind of porting issues might be involved when writing to more than one of these libraries.
How This Book Is Organized

Chapter 1, Introduction—In which we discuss the motivation for creating thread libraries, the advent of shared memory multiprocessors, and the interactions between threads and SMP machines. Chapter 2, Concepts—In which the reader is introduced to the basic concepts of multitasking operating systems and of multithreading as it compares to other programming paradigms. The reader is shown reasons why multithreading is a valuable addition to programming paradigms, and a number of examples of successful deployment are presented. Chapter 3, Foundations—In which we introduce to the underlying structures upon which threads are built, the construction of the thread itself, and the operating system support that allows an efficient implementation. Chapter 4, Lifecycle—In which the reader is treated to a comprehensive explanation of the intricacies in the life of a thread—birth, life, and death. Even death by vile cancellation. A small program which illustrates all of these stages concludes the chapter. Chapter 5, Scheduling—In which we explain the myriad details of the different scheduling models and the various alternative choices that could be made, describe context switching in detail, and delve into gruesome detail of the various POSIX options and parameters. There is a light at the end of the tunnel, however. Chapter 6, Synchronization—In which the reader is led on a hunt for the intimidating synchronization variable and discovers that it is not actually as frightening as had been thought. Programs illustrating the basic use of the POSIX primitives are shown. Chapter 7, Complexities—In which a series of more complex synchronization variables and options are presented and the trade-off between them and the simpler ones are discussed. Synchronization problems and techniques for dealing with them conclude the chapter. Chapter 8, TSD—In which an explanation of thread-specific data is provided, its use and some of the implementation details. We note a few places where use of TSD could be made more efficient and a few other optimizations that can be made. Chapter 9, Cancellation—In which we describe the acrimonious nature of some programs and how unwanted threads may be disposed of. The highly complex issues surrounding bounded time termination and program correctness are also covered. A simple conclusion is drawn. Chapter 10, Signals—In which we deal with the various aspects of handling asynchronous events in a multithreaded program. The definitions are given, alternative designs are discussed, and a program illustrating the most complex case is shown. Chapter 11, Details—In which the details of actually writing and compiling an MT program are reviewed. The defined constants are described and methods of dealing with errors are proposed. We note which vendors have made extensions to Pthreads, and where POSIX is headed. Chapter 12, Libraries—In which we explore a variety of operating systems issues that bear heavily upon the usability of the threads library in actual programs. We examine the status of library functions and the programming issues facing them. We look at some design alternatives for library functions. Chapter 13, Design—In which we explore some designs for programs and library functions. Making both programs and individual functions more concurrent is a major issue in the design of these functions. We look at a variety of code examples and the trade-offs between them. Chapter 14, Languages—In which the use of threads in various programming languages is considered and a few minor notes about special features and requirements are made. A number of public Pthreads libraries and some commercial products exist and are noted. Chapter 15, Tools—In which we consider the kinds of new tools that a reader would want when writing a threaded program. An overview of the Solaris tool set is given, as representative of what should be looked for. Chapter 16, Performance—In which we make things faster, look at general performance issues, political performance issues, and thread specific performance issues. We conclude with a discussion of the actual performance of multithreaded NFS. Chapter 17, Hardware—In which we look at the various designs for SMP machines (cache architectures, interconnect topologies, atomic instructions, invalidation techniques) and consider how those designs affect our programming decisions. Some optimization possibilities are looked at. Chapter 18, Examples—In which several complete programs are presented. The details and issues surrounding the way they use threads are discussed and references to other programs on the net are made.

"About this title" may belong to another edition of this title.

Top Search Results from the AbeBooks Marketplace

1.

Lewis, BilBerg, Daniel J.Sun Microsystems Press
Published by Prentice Hall
ISBN 10: 0136807291 ISBN 13: 9780136807292
New Quantity Available: > 20
Seller
INDOO
(Avenel, NJ, U.S.A.)
Rating
[?]

Book Description Prentice Hall. Book Condition: New. Brand New. Bookseller Inventory # 0136807291

More Information About This Seller | Ask Bookseller a Question

Buy New
17.45
Convert Currency

Add to Basket

Shipping: 13.85
From U.S.A. to United Kingdom
Destination, Rates & Speeds

2.

Bil Lewis, Daniel J. Berg, Sun Microsystems Press
Published by Prentice Hall (1997)
ISBN 10: 0136807291 ISBN 13: 9780136807292
New Paperback Quantity Available: 1
Seller
Ergodebooks
(RICHMOND, TX, U.S.A.)
Rating
[?]

Book Description Prentice Hall, 1997. Paperback. Book Condition: New. 1. Bookseller Inventory # DADAX0136807291

More Information About This Seller | Ask Bookseller a Question

Buy New
30.39
Convert Currency

Add to Basket

Shipping: 10.77
From U.S.A. to United Kingdom
Destination, Rates & Speeds

3.

Bil Lewis/ Daniel J. Berg/ Sun Microsystems Press
Published by Prentice Hall PTR (1997)
ISBN 10: 0136807291 ISBN 13: 9780136807292
New Paperback Quantity Available: 1
Seller
Revaluation Books
(Exeter, United Kingdom)
Rating
[?]

Book Description Prentice Hall PTR, 1997. Paperback. Book Condition: Brand New. 136th edition. 432 pages. 9.25x7.75x1.25 inches. In Stock. Bookseller Inventory # zk0136807291

More Information About This Seller | Ask Bookseller a Question

Buy New
48.18
Convert Currency

Add to Basket

Shipping: 2.75
Within United Kingdom
Destination, Rates & Speeds

4.

Lewis, Bil, Berg, Daniel J., Sun Microsy
Published by Prentice Hall (1997)
ISBN 10: 0136807291 ISBN 13: 9780136807292
New Paperback Quantity Available: 2
Seller
Murray Media
(North Miami Beach, FL, U.S.A.)
Rating
[?]

Book Description Prentice Hall, 1997. Paperback. Book Condition: New. Bookseller Inventory # P110136807291

More Information About This Seller | Ask Bookseller a Question

Buy New
40.10
Convert Currency

Add to Basket

Shipping: 15.38
From U.S.A. to United Kingdom
Destination, Rates & Speeds

5.

Bil Lewis; Daniel J. Berg; Sun Microsystems Press
Published by Prentice Hall (1997)
ISBN 10: 0136807291 ISBN 13: 9780136807292
New Softcover Quantity Available: > 20
Seller
Palexbooks
(Sanford, NC, U.S.A.)
Rating
[?]

Book Description Prentice Hall, 1997. Book Condition: New. Brand new! Please provide a physical shipping address. Bookseller Inventory # 9780136807292

More Information About This Seller | Ask Bookseller a Question

Buy New
35.20
Convert Currency

Add to Basket

Shipping: 30.78
From U.S.A. to United Kingdom
Destination, Rates & Speeds

6.

Bil Lewis, Daniel J. Berg and Sun Microsystems Pre
ISBN 10: 0136807291 ISBN 13: 9780136807292
New Quantity Available: 1
Seller
Castle Rock
(Pittsford, NY, U.S.A.)
Rating
[?]

Book Description Book Condition: Brand New. Book Condition: Brand New. Bookseller Inventory # 97801368072921.0

More Information About This Seller | Ask Bookseller a Question

Buy New
48.63
Convert Currency

Add to Basket

Shipping: 19.24
From U.S.A. to United Kingdom
Destination, Rates & Speeds

7.

Bil Lewis; Daniel J. Berg; Sun Microsystems Press
ISBN 10: 0136807291 ISBN 13: 9780136807292
New Paperback Quantity Available: 1
Seller
AMAZINGBOOKDEALS
(IRVING, TX, U.S.A.)
Rating
[?]

Book Description Paperback. Book Condition: BRAND NEW. BRAND NEW. Fast Shipping. Prompt Customer Service. Satisfaction guaranteed. Bookseller Inventory # 0136807291BNA

More Information About This Seller | Ask Bookseller a Question

Buy New
37.58
Convert Currency

Add to Basket

Shipping: 30.78
From U.S.A. to United Kingdom
Destination, Rates & Speeds

8.

Lewis, Bil; Berg, Daniel J.; Sun Microsystems Press
Published by Prentice Hall
ISBN 10: 0136807291 ISBN 13: 9780136807292
New PAPERBACK Quantity Available: 1
Seller
Cloud 9 Books
(Wellington, FL, U.S.A.)
Rating
[?]

Book Description Prentice Hall. PAPERBACK. Book Condition: New. 0136807291 New Condition. Bookseller Inventory # NEW6.0056601

More Information About This Seller | Ask Bookseller a Question

Buy New
55.47
Convert Currency

Add to Basket

Shipping: 30.77
From U.S.A. to United Kingdom
Destination, Rates & Speeds

9.

Lewis, Bil; Berg, Daniel J.; Sun Microsystems Press
Published by Prentice Hall (2013)
ISBN 10: 0136807291 ISBN 13: 9780136807292
New PAPERBACK Quantity Available: 1
Seller
Mi Lybro
(San Diego, CA, U.S.A.)
Rating
[?]

Book Description Prentice Hall, 2013. PAPERBACK. Book Condition: New. 0136807291. Bookseller Inventory # 56.MCONCHA9780136807292

More Information About This Seller | Ask Bookseller a Question

Buy New
65.78
Convert Currency

Add to Basket

Shipping: 22.31
From U.S.A. to United Kingdom
Destination, Rates & Speeds