I am writing a book about the OmniThreadLibrary called Parallel Programming with OmniThreadLibrary.
Read more about it on my blog.
All material for the book is mirrored on the OmniThreadLibrary wiki.
If you are new to multithreading and use at least Delphi 2009, you should start with my CodeRage 6 talk (video - CodeCentral, video - Dropbox, slides + transcript, code).
Next in line are the articles on high-level threading constructs: Parallel.Async (another), Parallel.Future (exception handling), Parallel.Join, Parallel.ParallelTask, Parallel.ForEach, Parallel.Pipeline (exception handling), Parallel.ForkJoin, Parallel.BackgroundWorker, Parallel.TaskConfig.
You should also take a look at my articles dealing with multithreading problems from real life.
FastMM in Depth – presentation (pps, pdf), code (zip)
Parallel Programming Made Easy – presentation (pps, pdf), code (zip)
Building Multithreaded Solutions with
OmniThreadLibrary – presentation (pps, pdf), code (zip)
Parallel Programming with OmniThreadLibrary - presentation (pdf), video (flash, mp4)
Getting Full Speed with Delphi - presentation (pps), handouts (pdf), code (zip)
The simplest possible OTL threading code
Task controller needs an owner
Message-driven worker, the OTL way
Registering additional communication channels
Synchronize comes to OmniThreadLibrary
Alternatively, you can open all my OmniThreadLibrary related articles in one go.
Lock-free stack tetralogy: Implementing lock-free stack, Lock-free stack problem, A working lock-free stack implementation, Lock-free queue
Calling OmniThreadLibrary methods by name
Using RTTI to call task methods
Blocking collection trilogy: Inverse semaphore, Dynamically allocated queue, Blocking collection
Parallel for implementation: Overview, Input, Output.
The simplest possible OmniThreadLibrary threading code.
Threaded "Hello, World" with TOmniEventMonitor component created in runtime.
Hello, World with bidirectional communication; TOmniEventMonitor created in runtime.
Threaded "Hello, World" with TOmniEventMonitor component on the form.
Hello, World with bidirectional communication; TOmniEventMonitor component on the form.
Hello, World with bidirectional communication, the OTL way.
Obsolete, almost totally equal to the demo 5_TwoWayHello_without_loop.
Demonstrates .WaitForInit, .ExitCode, .ExitMessage, and .SetPriority.
Demonstrates creation of additional communication channels.
Simple communication subsystem tester.
Full-blown communication subsystem tester. Used to verify correctness of the lock-free code.
Thread pool demo.
Demonstrates .WithLock.
Demonstrates exception catching.
Demonstrates .TerminateWhen and .WithCounter.
Task group demo.
Demonstrates .ChainTo.
Demonstrates .MsgWait and Windows message processing inside tasks.
Calling task methods by name and address.
Benchmarks various was of task method invokation.
Parallel QuickSort demo.
Demonstrates the use of anonymous methods as task workers in Delphi 2009.
Tests for .Terminate and .Terminated.
Demonstrates file scanning in a background thread.
Demonstrates how to create a connection pool with OmniThreadLibrary.
Demo for ReceiveWait and SendWait.
How to run multiple event monitors in parallel.
Parallel tree processing.
Demo for the new hook system.
Demo for OnMessage and OnTerminated, named method approach.
Demo for OnMessage and OnTerminated, anonymous method approach.
Demo for the new RegisterWaitObject/UnregisterWaitObject API.
Stress test for new TOmniBaseQueue and TOmniQueue.
Stress test for new TOmniBlockingCollection, also demoes the use of Environment to set process affinity.
Parallel tree scan using TOmniBlockingCollection.
Parallel tree scan using Parallel.ForEach (Delphi 2009 and newer).
ParallelJoin: Parallel.Join demo.
Ordered parallel for loops.
Futures.
Very simple parallel graphics demo.
Multistage parallel processes.
Stress test for TOmniMessageQueue.
Demo for IOmniTask.Invoke.
QuickSort implemented using Parallel.ForkJoin.
Max(array) implemented using Parallel.ForkJoin.
Demo for Parallel.Async.
Demo for task configuration with Parallel.TaskConfig.
Exception handling in high-level OTL constructs.
Multiple frames each communication with own worker task.
Wrapping arrays, hashes and records in TOmniValue.
Pipeline stress test by [Anton Alisov].
Demo for the Parallel.BackgroundWorker abstraction.