Parallel Programming with OmniThreadLibrary
I wrote a book about the OmniThreadLibrary called Parallel Programming with OmniThreadLibrary. It covers all aspects of OmniThreadLibrary and is available in electronic and printed edition.
The book is also available online.
Next in line are the articles on high-level threading constructs:
You should also take a look at my articles dealing with multithreading problems from real life.
Alternatively, you can select from list of all my OmniThreadLibrary related articles.
Lock-free stack tetralogy
Blocking collection trilogy
Parallel for implementation
VDUG webinar 2010
Embarcadero Technology Partner Spotlight 2015
Zlot Programistów Delphi 2017
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 exception catching.
Demonstrates .TerminateWhen and .WithCounter.
Task group demo.
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.
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.
Demo for the Async/Await abstraction.
Lock manager (IOmniLockManager
Demonstrates progress bar updating from a ForEach loop.
Simplified ‘run & invoke’ low-level API.
Simple and fast parallel for.
Speed comparison between Parallel.ForEach, Parallel.For, and TParallel.For (XE7+).
Demo for the TWaitFor class.
Demonstrates the Parallel.Map abstraction.
Demonstrates the TOmniBlockingCollection.ToArray
Demonstrates how to use OmniThreadLibrary from a console application.
Demonstrates how to use OmniThreadLibrary from a service application.
Demonstrates how to work with processor groups and NUMA nodes.
Demonstrates the Parallel.TimedTask asbstraction.
Demonstrates how to start OmniThreadLibrary threads from background threads.
Demonstrates the use of TOmniBlockingCollection.FromArray and TOmniBlockingCollection.FromRange.