Parallel Programming with OmniThreadLibrary
Book information
Description
Table of Contents About me Credits Introduction Formatting conventions Learn more Release notes Introduction to multi-threading Multi-threading as a source of problems Reading and writing shared data Modifying shared data Writes masquerading as reads Introduction to OmniThreadLibrary Requirements License Installation Installing with GetIt Installing with Delphinus Installing design package Why use OmniThreadLibrary? Tasks vs. threads Locking vs. messaging Message loop required OmniThreadLibrary and console OmniThreadLibrary task started from another task OmniThreadLibrary task started from a TThread TOmniValue Data access Type testing Clearing the content Operators Using with generic types Array access Handling records Object ownership Working with TValue Low-level methods TOmniValueObj Fluent interfaces High-level multi-threading Introduction A life cycle of an abstraction Anonymous methods, procedures, and methods Pooling Blocking collection IOmniBlockingCollection Bulk import and export Throttling Task configuration Async Handling exceptions Async/Await Future IOmniFuture interface Completion detection Cancellation Handling exceptions Examples Join IOmniParallelJoin interface IOmniJoinState interface Cancellation Handling exceptions Parallel task IOmniParallelTask interface Example Handling exceptions Examples Background worker Basics IOmniBackgroundWorker interface Task initialization Work item configuration Work item interface Examples Pipeline Background Basics IOmniPipeline interface Example Generators, mutators, and aggregators Throttling Parallel stages Exceptions Examples Parallel for IOmniParallelSimpleLoop interface Iterating over an array Examples ForEach Cooperation Iterating over … … Number ranges … Enumerable collections … Thread-safe enumerable collections … Blocking collections … Anything Providing external input IOmniParallelLoop interface Preserving output order Aggregation Cancellation Task initialization and finalization Handling exceptions Examples Fork/Join IOmniForkJoin interface IOmniCompute interface IOmniCompute interface Exceptions Examples Map IOmniParallelMapper interface Timed task IOmniTimedTask interface Low-level multi-threading Low-level for the impatient Four ways to create a task IOmniTaskControl and IOmniTask interfaces Task controller needs an owner Communication subsystem Processor groups and NUMA nodes Thread pooling Execution flow IOmniThreadPool interface Task exit code Monitoring thread pool operations Processor groups and NUMA nodes Lock-free collections Bounded Stack Bounded queue Message queue Dynamic queue Observing lock-free collections Examples Benchmarks Event monitor Simple tasks Name UniqueID Parameters Termination ExitCode Exceptions Sending messages to a task Receiving messages from a task ChainTo Join / Leave MonitorWith / RemoveMonitor Enforced Unobserved Cancellation token / CancelWith Lock / WithLock WithCounter SetPriority SetQueueSize TOmniWorker tasks WaitForInit Task Receiving messages RegisterComm Invoke Windows message & APC processing Timers TerminateWhen UserData Task groups IOmniTask interface Name and ID Parameters Termination Exit status Exceptions Communication Timers RegisterWaitObject CancellationToken Lock Counter Processor groups and NUMA nodes Internal and obsolete functions Synchronization Critical sections IOmniCriticalSection TOmniCS Locked Why not use TMonitor? TOmniMREW Cancellation token Waitable value Inverse semaphore Initialization Pessimistic initialization Optimistic initialization TWaitFor TOmniLockManager TOmniSingleThreadUseChecker Miscellaneous TOmniTwoWayChannel TOmniValueContainer TOmniCounter TOmniAlignedInt32 and TOmniAlignedInt64 TOmniRecordWrapper TOmniRecord IOmniAutoDestroyObject IOmniIntegerSet Environment IOmniAffinity How-to Background file scanning Web download and database storage Parallel for with synchronized output Using taskIndex and task initializer in parallel for Background worker and list partitioning Parallel data production Building a connection pool From theory to practice Running the demo QuickSort and parallel max QuickSort Parallel max Parallel search in a tree Multiple workers with multiple frames The worker The frame The form OmniThreadLibrary and databases Database model Frame and worker Connecting to the database Retrieving the data Main program OmniThreadLibrary and COM/OLE Using a message queue with a TThread worker Sending data from multiple producers to a single worker Initialization and cleanup Sending data to the worker Receiving the data Sending data from a worker to a form Initialization and cleanup Sending data to the form Receiving the data A. Units B. Demo applications C. Examples D. Hooking into OmniThreadLibrary Exception notifications Thread notifications Pool notifications E. ForEach internals Source provider Data manager Local queue Output ordering F. Hyperlinks
Similar books
Parallel Programming with OmniThreadLibrary
2012 · EPUB
Delphi High Performance: Master the art of concurrency, parallel programming, and memory management to build fast Delphi apps, 2nd Edition
EPUB
Delphi High Performance: Master the art of concurrency, parallel programming, and memory management to build fast Delphi apps, 2nd Edition
Delphi High Performance: Master the art of concurrency, parallel programming, and memory management to build fast Delphi apps, 2nd Edition
2023 · RAR
Mastering Delphi Programming: A Complete Reference Guide
2019 · PDF
Hands-On Design Patterns with Delphi
2019 · EPUB
Delphi high performance
2018 · PDF
MySQL® Notes for Professionals book
2018 · PDF