Just released book: Delphi Thread Safety Patterns

Delphi Thread Safety Patterns Book




While the thread safety of a particular piece of code depends on the surrounding context and how it is used, some data types are inherently unsafe, and for some of them, thread safety will depend on the use case and the specific code. Unfortunately, when you look at some class, type declaration, or API in isolation, there is very little information there that will tell you whether instances of that type can be safely used in multiple threads, or under which conditions.

The proper place to learn about the thread safety of an API is its documentation. However, most documentation will not explicitly give you that information. Occasionally, the documentation will mention that a particular feature is not thread-safe, or will tell you that a feature can be used in background threads, but for the most part, you will have to figure out thread safety on your own. One reason for this is that thread safety depends on the context. The number of features that are absolutely unsafe or are absolutely safe is very small.

The basic thread safety rules are simple, but applying those rules is more complicated. Just as design patterns give us general solutions to common coding problems, we can extract common coding patterns from various multithreaded code—thread safety patterns.

This book converts the thread safety rules into practice, and gives an overview of core Delphi frameworks and commonly used features from a thread safety perspective. You will find examples of how particular classes can be used in a thread-safe manner and how to perform some common tasks, following the already established thread safety patterns.

Besides elaborating on the thread safety of particular parts of Delphi frameworks, the book explores the thread safety of alternate solutions, along with general coding examples. Every explanation about why some code is thread-safe or not, also serves as an example of thread (un)safety patterns, and helps in recognizing thread-unsafe code, as well as establishing a working set of thread safety patterns that can later be applied in custom code.

Those examples, covering the most commonly used parts of Delphi frameworks, will also serve as learn by example pointers for determining the thread safety of other parts of the frameworks, and even of 3rd-party libraries that are not specifically covered in this book.

There are also implementations and examples of some commonly used concepts in asynchronous programming that are not part of the core Delphi frameworks, but can be indispensable when writing multithreaded code.


Table of Contents - 399 pages

Introduction

Part 1. Thread Safety

* Language and general thread safety

* Proving thread safety

* Examples


Part 2. The Core Run-Time Library

* Global state

* Floating-point control register

* FormatSettings and formatting routines

* Global functions and procedures

* Class fields, singletons, and default instances

* Core classes

* Threads

* Streams

* Collections

* Parallel collection processing

* Components

* RTTI


Part 3. Core Frameworks

* Serialization

* System.Net

* Asynchronous Programming Library

* Indy

* REST

* Regular expressions


Part 4. Visual Frameworks - VCL and FMX

* Visual framework components

* LiveBindings

* VCL and FMX controls

* Interactions with OS APIs and frameworks


Part 5. Graphics and Image Processing

* Graphics and image processing

* Resource consumption

* Common graphics types and API

* VCL graphics types and API

* VCL graphics example

* FMX graphics types and API


Part 6. Custom Frameworks

* Writing custom frameworks

* Logging

* Cancellation tokens

* Event bus

* Measuring performance


Appendix

* References

* Quality Portal Reports


Comments

Popular posts from this blog

Coming in Delphi 12: Disabled Floating-Point Exceptions

Assigning result to a function from asynchronous code

Beware of loops and tasks