book your perfect training course
thousands of courses, off-site or in-house, across the UK
browse training

Browse the full list of courses above.

education search

 

Training Course: Multi-Threaded Applications Programming

training course enquiry

Training Course Code: SI-260
Training Duration: 3 days.
Price: £1,200

Training Course Summary:

The Multithreaded Applications Programming course provides students with information about threads: what they are, how they work, why they are useful. The course includes several sessions using the various tools which are available. It examines in detail some simple programs, looking at both the operation and performance of those programs. The course also covers many of the complexities and hardware-dependent performance issues that arise.

The actual code examples are in POSIX threads on Solaris 2.x (examples also run on Digital UNIX, IRIX, and HP-UX), with reference to how the UNIX International (aka "Solaris Threads") API is used.

This course provides laboratory work in writing and debugging multi-threaded programs.

Pre-Requisites:

To succeed fully in this course, students should be able to:

Use basic Solaris commands
Create and edit text files using emacs, vi, or the OpenWindows Text Editor
Create correct C programs
Demonstrate a general knowledge of UNIX system calls and library calls, including fork() and exec, signals, and interprocess communication
Debug a C program using dbx or the OpenWindows debugger

Who Should Attend:

Students who can benefit from this course are experienced C programmers who are proficient in system interface programming

Training Course Overview/Content:

Module 1 - Introduction to Multithreading


Thread concepts, properties, and standards
Concurrency versus parallelism
Process structure
Thread process structure
Benefits of threads
Distributed multiprocessing
When not to use threads

Module 2 - Getting Started With POSIX Threads


Thread creation and destruction
Components of threads
Attributes of threads
Waiting for threads
Using the Workshop debugger

Module 3 - Introduction to Synchronization


The synchronization instruction
POSIX synchronization variables
Using mutexes, semaphores, readers/writer locks, and condition variables
EINTR, spurious wakeups

Module 4 - Locking Problems


Deadlocks
Recursive Locking
Race Conditions

Module 5 - Advanced Synchronization


The lost wakeup problem
Barriers, monitors, robust mutexes
Dynamic allocation

Module 6 - Thread Specific Data


Using TSD
Deleting TSD keys
TSD destructors

Module 7 - Cancellation


State and type
Cleanup handlers
Cancellation and C++
Bounded time termination

Module 8 - Design


Master/slave
Producer/consumer
Pipeline

Module 9 - Thread-Safe Libraries


Unsafe library functions
pread() and pwrite()
Window toolkits
errno and getc()
Stub functions

Module 10 - UNIX Signals


How signals work
Implementation details
sigwait()
Signal safety

Module 11 - Advanced Scheduling


Realtime scheduling
Priority inversion
Allocation domains
Scheduler Controls

Module 12 - Hardware


SMP bus designs
Cross-bar switches
Sun Ultra Enterprise
Out of order execution

Module 13 - Performance


Amdahl's law
Speedup for parallel benchmarks
How many LWPs?
Processor affinity

Module 14 - API Details


Return values
Constants
Attribute objects
Initialization and destruction

Module 15 - Compiling


Solaris libraries
Compiling POSIX
Compiling mixed POSIX and UI

Module 16 - Other Tools


Proctool
Trace Normal Form

Module 17 - Other Details


Fork problems
Debugging interface
Thread stacks
Optional portions

Module 18 - More Information


Newsgroups, FAQs, books, products
Training course title:
Name:
Email:
Phone:
Company Name: (if applicable)
Number of delegates attending:
 
 Preferred Location: 
 Select from above or tick in house (we come to you) 
 
Preferred dates:
Click to select a dateClick to select a date
Any Special Requests:
Send Enquiry

Other course you might also like