Perl 6 Concurrency and Parallelism

This 1-day workshop explores a range of Perl 6 language features and modules for achieving asynchrony, coping with concurrency, and profiting from parallel processing. After a touch of theoretical background, the workshop moves through a range of different problems, showing how to effectively solve them in Perl 6. Taught by a Perl 6 concurrency designer and compiler implementer, participants will not only learn how to use Perl 6 concurrency features, but also the thinking behind them.

Prerequisites

Participants should have some amount of familiarity with Perl 6 programming. At a minimum, one should be aware of common data types and control flow constructs, and be comfortable with basic use of the object-oriented aspects of the language.

Topics covered

  1. The differences and relationships between concurrency, parallelism, and asynchrony
  2. Atomicity, races, and non-determinism
  3. Concurrency control: locks, monitors, concurrent data structures
  4. Task parallelism: basics, divide and conquer, non-blocking await
  5. Data parallelism: parallel loops, parallel list processing
  6. Reactive programming: seeing the world in events, Supply and Supplier, the react/supply/whenever syntax
  7. Asynchronous processes, sockets, HTTP requests, and more
  8. Patterns and experiences from real-world use

About the teacher

Jonathan Worthington was involved in the design of many of the Perl 6 concurrency features, and carried out a significant amount of the work on their implementation. He is the architect of Cro, a set of distributed systems libraries that are built on the Perl 6 concurrency model, and has recently developed various applications that make use of Perl 6 concurrency features. Up until the end of 2015, Jonathan was a regular teacher of software development topics; nowadays, he spends most of his time building stuff.

Date and time

This workshop is held on 6 August from 10:00 to 18:00.

Location

Radisson Blu Daugava hotel, our venue.

Price

Ticket sales opens in February.