Check out the new USENIX Web site.
USENIX '99 Annual Technical Conference
Table of Contents
Monday, June 7, 1999
Full Day Tutorial Session (9:00 am - 5:00 pm):
M3   Multithreaded Programming in POSIX (NEW)
Bil Lewis, Lambda Computer Science

Who should attend: This tutorial is designed with the experienced C or C++ programmer in mind. Anyone planning to work with any of the multithreading libraries will find a full explanation of their foundations in this course, and should have little trouble when dealing with the different APIs. Java programmers will also find this course useful in understanding Java threads.

Multithreaded programming has graduated from the realm of arcane programming to the field of common use. No programmer should develop code without at least considering the possible benefits of a multithreaded design. Numerous everyday applications, from Web browsers to servers, GUI-based systems to databases, and all manner of multi-function programs use and have benefitted from multi-threading.

This tutorial will give the programmer a solid understanding of threads - what they are, how they work, why they are useful, and many of the programming issues surrounding their use. It will examine in detail some simple programs, looking at both the operation and performance of these programs. The tutorial will also cover many of the complexities and hardware-dependent performance issues that arise.

The actual code examples will be in PThreads (the examples have been run on Solaris, Digital UNIX, IRIX, and HP-UX), with reference to how the Java and Win32 APIs are used. These same programs have been ported to Java and are available on the Web. At the end of this course, the skillful programmer will be able to evaluate the applicability of MT to specific projects, understand MP performance issues, and have the background to begin writing threaded code.

In this course you will learn about:

-   What the possible scheduling algorithms for threads are and about the hardware issues related to threads and scheduling
-   Types of synchronization available in different libraries and how they work
-   How signals have been extended to work with threads
-   How to deal with shared memory, unreserved virtual memory, CPU-specific binding of threads, kernel-level scheduling, etc.
-   What it means to be "MT-safe"
-   What the different efficiency issues are
-   Which aspects of MT affect performance
-   How many CPUs can be used effectively for different programs
-   Various multiprocessor designs
-   Web pages, sample programs, newsgroups, books

Bil Lewis (M3 Instructor), with over 20 years of experience in the field, spent his last two years at Sun working with multithreading as it pertains to application development. He was an instructor at Stanford for many years, and taught in Kenya as a Peace Corps Volunteer. Bil is co-author of the Threads Primer, the GNU Emacs Lisp Manual, Multithreaded Programming with PThreads, and Multithreaded Programming with Java.

Program at-a-Glance - Tutorials - Technical Sessions - Registration -
Keynote Address - Activities & Services - Hotel & Travel Info - Brochure Home
Conference Index
Events Calendar