Multithreading in C

Description: In symmetric multi-processing architectures, threads can be used to implement fine grained parallelism. UNIX systems have a standardized C language thread programming interface specified by the POSIX standard. Implementations that adhere to this standard are referred to as POSIX threads, or Pthreads.

Pthreads is often considered the building blocks of parallelism. Even if the goal is not to program in threads, it is a valuable tool to know, since other packages often utilize threads. This class will introduce by example the concepts and practices of using Pthreads. Each of the three major classes of routines in the Pthreads API are covered: Thread Management, Mutex Variables, and Condition Variables.

Instructor: Edward Armstrong, SHARCNET, University of Guelph.

Prerequisites: A basic but solid understanding of the C programming language is required, as well as a working knowledge of parallel design patterns (available from the SHARCNET seminar series). All examples will involve the Linux command line using the gnu compiler collection, and knowledge of Linux command line tools will be assumed.