文件名称:
omnithreadlibrary.pdf
开发工具:
文件大小: 4mb
下载次数: 0
上传时间: 2019-07-08
详细说明:omnithreadlibrary.pdfTable of contents
Credits
Introduction
Formatting Conventions
Learn more
Advertisement
Release notes
1Introduction to Multithreading
1.1 Dos and Don't's of Multithreading
1.1. 1 Reading and Writing Shared Data
1.1.2 Modifying Shared Data
1.1.3 Writes Masquerading as reads
2.Introduction to OmniThreadLibrary
2.rEquirements
2. 2 License
2.3 Installation
2.3.iNstalling Design Package
2.4Why Use OmniThreadLibrary?
2.5 Tasks ys. Threads
2.6Locking vS Messaging
2.mEssage Loop Required
2.7. 1 OmniThreadLibrary and Console
2.7.2 Omni ThreadLibrary Task Started from another Task
2.7.3 OmniThreadLibrary Task Started from a TThread
2. 8 TOmnivalue
2. 8. 1 Datd access
2.8.2- Type Testing
2.8.3 Clearing the Content
2.8. oPerators
2.8.5 Using with Generic Types
28.6 Array acces
2. 8. hAndling Records
2. 8.8 obiect Ownership
2.8.9 Working With Tvalue
2.8.10 Low-level methods
2.9 TOmni valueobi
2.10 Fluent interfaces
3. High-level multithreading
3. 1 Introduction
3.1.1 A Lifecycle of an Abstraction
3.1.2 Anonymous Methods, Methods and procedures
3.1.3 Pooling
3.2 Blocking collection
3.2.1 1OmniBlocking Collection
3.2.2 Throttling
3.3 Task Configuration
3.4 Async
3.4.1 Handling Exceptions
3.5 Async/Await
3.6 Future
3.6.1 IOmniFuture Interface
3.6.2 Completion Detection
3. 6.3 Cancellation
3.6.4 Handling Exceptions
3.6.5 Examples
3. Join
3.7.1 IOmniParalleljoin interface
3.7.2 IOmnijoin State Interface
3.7.3 Cancellation
3.7. 4 Handling Exceptions
3.8 Parallel Task
3.8.1 IOmniParallelTask interface
3.8.2 Example
3.8.3 Handling Exceptions
3. 8.4. Examples
3.9 Background Worker
3.9.1 Basics
3.9.21OmniBackgroundWorker Interface
3. 9.3 Task initialization
3.9.4 Work Item Configuration
3.9.5 Work item interface
3.9.6E
dupes
3.10 Pipeline
3.10.1 Background
3.10.2 Basics
3.10.3 1OmniPipeline Interface
3. 10.3. Example
3.10.4 Generators, Mutators, and Aggregators
3. 10.5 Throttling
3.10.6 Parallel Stages
3,10.eXceptions
3.10.8 Example:
3.11 For
3. 11.11OmniParallelSimple loop interface
3.11.iTerating over an array
3. 11.3 Examples
3.12 For each
3.12.1 Cooperation
3. 12.2 Iterating over..
3. 12.2.1 2: Number Ranges
3. 12.2.2.. Enumerable collections
3. 12.2.3 Thread-safe enumerable collections
3. 12.2.42.. Blocking Collections
3. 12.2.5:.. Anything
3. 12.3 Providing Extemal Input
3.12. 4 1OmniParallelloon Interface
3. 12.5 Preserving Output Order
3,126△ gregation
3.12.7 Cancellation
3. 12. 8 Task initialization and finalization
3. 12.9 Handling Exceptions
3.12.10 Examples
3.13 Fork/Join
3.13.1 IOmniForkjoin Interface
3.13.2 1OmniCompute Interface
3.13. 1OmniCompute<'T> Interface
3.13.4 Exceptions
3. 13. Examples
3.14Map
3. 14. 11OmniParallclMapper interfacc
3.15 Timed task
3.15.1 1OmnilimedTask interface
4. LOW-level multithreading
4.1LOW-level For the Impatient
4.2 Four ways to create a task
4.3 IOmniTask Control and iomnitask interfaces
4.4 Task Controller needs an owner
4.5 Communication Subsystem
4.6 Processor groups and NUMA nodes
4.tHread Pooling
4.7.1 Execution flow
4.7.2 IOmniThreadPool interface
4.7.3 Task exit code
4.7. 4 Monitoring Thread Pool Operations
4.7.5 Processor groups and NUMa nodes
4. 8 Lock-free collections
4. 8. 1 Bounded stack
4.8.2 Bounded queue
4.8.3 Message Queue
4. 8. DYnamic Qucuc
4.8.5 Observing Lock-free Collections
4.8.5. Examples
4.8.6 Benchmarks
4.9 Event monitor
4.10 Simple Tasks
4,10,1Name
4.10.2 UniqueID
4.10.3 Parameters
4.10.4 Termination
4.10.5 ExitCode
4.10.6 Exceptions
4.10.7 Sending Messages to a Task
4.10.8. Receiving Messages from a Task
4. 10.9 ChainTo
4.10.10 Join/ Leave
4.10. 11 Monitor With/ Remove monitor
4.10.12 Enforced
4.10.13 Unobserved
4.10. 14 Cancellation Token cancel with
4.10.15 Lock/WithLock
4.10.16 With Counter
4.10.17 SetPriority
4. 10.18 SctQucueSizc
4.11 TOmniWorker tasks
4.11.1 WaitForlnit
4.11.2Task
4.11.3 Receiving Messages
4.11.4 Registercomm
4. 11.5 Invoke
4.11.6 Windows message apC Processin
4.117 Timers
4. 11. 8 Terminate when
4.11.9 UserData
4.12 Task groups
4.13 IOmniTask Interface
4.13.1 Name and id
4.13.2 Parameters
4.13.3 Termination
4.13, 4 Exit status
4,13. eXceptions
4.13.6 Communication
4.13.7 Timers
4. 13.rEgister WaitObiect
4. 13.9 CancellationToken
4.13.10Lock
4.13.11 Counter
4.13. 12 Processor groups and NUMA nodes
4. 13.13 Internal and obsolete functions
5. Synchronization
5.1 Critical Sections
5.1.1 IOmniCriticalsection
5.1.2 TOnics
5.1.3 Locked
5.1.3.wHy Not Usc TMonitor?
5.2 TOmniMRE W
5.3 Cancellation token
5.4 Waitable value
5.5 Inverse Semaphore
5. 6 Initialization
5. 6.1 Pessimistic Initialization
5.6.2 Optimistic Initialization
5.7TWaitFor
5.8 TOmnlLockManager
5.9TOmnisingleThreadUse Checker
6. Miscellaneous
6.1 TOmniTwo Way Channel
6.2 TOmni value container
6.3 TOmniCounter
6.4TOmniAlignedInt32 and TOmniAlignedInt64
6.5 TOmniRecordWrapper
6. 6 TOmnirecord
6.7 IOmniAutoDestroyObiect
6.8 IOmnilntegerset
6. 9 Environment
6.9.1 IOmniAffinity
7. How-to
7. 1 Background File Scanning
7.2 Async/Await
7.3 Web download and database storage
7. 4 Parallel For with Synchronized Output
7.5 Using taskIndex and Task Initializer in Parallel For
7.6 Background Worker and List partitioning
7.7 Parallel data production
7.8 Building a Connection Pool
7. B.1 From Theory to Practice
7.8.2 Running the Demo
7.9 Quick Sort and Parallel Max
7.9.1 QuickSort
792 Parallel maⅹ
7.10 Parallel search in a tree
7.11 Multiple Workers with Multiple frames
7. 11.1 The worker
7. 11.2 The frame
7.11.3 The form
7. 12 OmniThreadLibrary and Databases
7.121 Database model
7.12.2 Frame and worker
7. 12.2.1 Connecting to the Database
7. 12.2.2 Retrieving the data
7. 12.3 Main Program
7. 13 OmniThreadLibrary and COm/ole
7.14 USing Message Queue with a TThread Worker
7. 14.1 Sending Data from Multiple producers to a Single Worker
7. 14.1.initialization and Cleanup
7. 14.1.2 Sending data to the worker
7. 14.1.3 Receiving the Data
7. 14.2 Sending Data from a Worker to a Form
7. 14.2.1 Initialization and Cleanup
7. 14.2.2 Sending Data to the Form
7. 14.2.3 Receiving the Data
8. Glossary
appendix
Demo applications
Examples
Installing with Get
etIt
Installing with Delphi
Inus
Hooking Into OmniThreadLibrary
Exception notifications
Thread notifications
Pool notifications
For each internals
Source provider
Data Manager
LoCal Queue
Output orderin
Notes
Credits
The author would like to thank gorazd jernejc (also known as gn) for his contribution to
the OmniThreadlibrary project Gorazd, oTL would not be the same without you!
Parts of code were provided by anton Alisov and Lee Nover. Thanks!
Following programmers(in alphabetical order) helped with reporting and fixing bugs
ajasja, andi, Anton Aliso, dottor_jeckill, geskill, Hallvard Vassbotn, Jamie, M.J. Brandt,
Mason Wheeler, Mayjest, meishier, morliC, Passella, Qmodem, Unspoken, Zarko.
Great thanks go to Pierre le Riche who wrote beautiful FastMM memory manager and
allowed me to include it in the distribution
Coverpage(cDaveGingrichhttp://www.flickrcom/photos/ndanger/2744507570/
Introduction
This is a book about OmniThread Library, a multithreading library for embarcadero
Delphi rapid development environment
The book assumes that the reader has some understanding about the multithreading
programming. If you are new to multithreading, an excellent introduction is
Multithreading- The Delphi way by Martin Harvey. That book is oldie, but goldie
A more up-to-date overview of Delphi multithreading capabilities is published in the
Delphi Xe2 Foundations, Part 3 by Chris rolliston, which is available on Amazon
Formatting Conventions
This books covers the latest official OmniThread Library release
When a part of the book covers some other version, a version tag in superscript will indicate
relevant version or versions. Version numbers(f i. 2. 1) are used for older releases and
SVN revision numbers(f i. r1184) are used for functionality that was added after the last
official release
A single version or revision number(f i. [r1184] indicates that the topic in question was
introduced in this version and that it is still supported in the current release
A range of two versions(fi. 1.0-1 indicates that the topic was introduced in the first
version (1.o in this example)and that it was supported up to the second version (1.1)
After that, support for this topic was removed or it was changed so much that an additional
section was added to describe the new functionality
Learn more
A good way to learn more about the OmniThreadlibrary is to go through the demos. They
are included in the standard omni threadlibrary distribution so you should have them on
the disk already if you have installed OmniThreadlibrary each demo deals with very
limited subset of OmniThreadLibrary functionality so they are farily easy to understand
From time to time I'm presenting OmniThreadLibrary in live webinars. Recordings are
available on gumroad
I am also frequently posting about the OmniThreadLibrary on my blog. All the relevant
articles are tagged with the OmniThreadLibrary tag
Support is also available on StackOverflow(make sure to tag the question with
omnithreadlibrary)and on the Google+ OmniThreadLibrary community
You can also stay in touch by following my Twitter account
Advertisement
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.