Lesson Index

Figure 1

Lesson 1: Using the Parallel Patterns Library

The Microsoft C++ Concurrency Runtime (ConcRT) includes the Parallels Patterns Library (PPL) to assist you in writing fine-grained parallel programs. This lesson will help you become acquainted several aspects of the PPL. In case you are not familiar with new C++0x language features, this lesson will also guide you through some of the basics.

Lesson 2: Protecting Shared Data using critical_section

When working with code that shares data, the programmer must be very careful to avoid concurrency pitfalls such as data races. Lesson 2 will show you how to synchronize data access using one of the synchronization primitives in the PPL.

Lesson 3: Protecting Shared Data using the reader_writer_lock

Critical Sections may be a great way to synchronize access to shared data that is prone to concurrent access. In case you have a scenario where many threads read the shared data but not too many threads write to shared data, then maybe it’s a good idea to use the reader_writer_lock instead.

Lesson 4: Working with the Concurrency Runtime Events

Concurrency Runtime events take advantage of UMS (User Mode Scheduling) and are cooperative when it comes yielding for other scheduled tasks. This lesson will show you how to work with Concurrency Runtime events and task groups and how they differ from the regular Win32 events.

Lesson 5: Working with Agents

If your program has an intricate flow and may be parallelized using components that must communicate with one another, then agents might be your best choice. This lesson will teach you how to work with the asynchronous agents library, a data flow message passing library.