Presentation is loading. Please wait.

Presentation is loading. Please wait.

H IGH - LEVEL M ULTITHREADED P ROGRAMMING [P ART III] Primož Gabrijelčič.

Similar presentations


Presentation on theme: "H IGH - LEVEL M ULTITHREADED P ROGRAMMING [P ART III] Primož Gabrijelčič."— Presentation transcript:

1 H IGH - LEVEL M ULTITHREADED P ROGRAMMING [P ART III] Primož Gabrijelčič

2 B ACKGROUND I NFORMATION

3 About Me Primož Gabrijelčič Programmer, consultant, writer, speaker – thedelphigeek.com – www.glagolite.si/delphi Hacking multithreaded code since 1999

4 About OmniThreadLibrary „VCL for multithreading“ Delphi 2007 – XE3[4] Open source – OpenBSD license – www.omnithreadlibrary.com – omnithreadlibrary.googlecode.com Win32/Win64

5 About the Webinars Code and video: www.omnithreadlibrary.com/webinars Code = free, video = $10 20 free books, courtesy of the De Novo Software, www.denovosoftware.com

6 High-Level Abstractions Async [/Await] Future Join ForEach ParallelTask BackgroundWorker Pipeline ForkJoin

7 Which abstraction to use? Consider data flow!

8 High-Level Abstractions Async [/Await] Future Join ForEach ParallelTask BackgroundWorker ForkJoin Pipeline Parallel iteration over data

9 ForEach

10 Iterate over … Integer range Enumerable collection (TStringList …) Thread-safe enumerable collection (OTL) Blocking collection (IOmniBlockingCollection) Anything – Custom enumerator function – Main program writing into a blocking collection

11 Special features Synchronized access to data Data prefetching Work stealing Optional output ordering Aggregation

12 aggregate := initial value for each value in source Execute(value, result) if not result.IsEmpty then Agreggator(aggregate, value)

13 Demos 35_ParallelFor 36_ParallelAggregate 38_OrderedFor

14 High-Level Abstractions Async [/Await] Future Join ForEach ParallelTask BackgroundWorker ForkJoin Pipeline Parallelization of multistage operations

15 Pipeline

16 Example

17 Web Spider

18 P ARTING N OTES

19 Keep in Mind Don’t parallelize everything Rethink the algorithm Data flow dictates the abstraction Measure the improvements Test, test and test

20 Code Will be available shortly at www.omnithreadlibrary.com/webinars


Download ppt "H IGH - LEVEL M ULTITHREADED P ROGRAMMING [P ART III] Primož Gabrijelčič."

Similar presentations


Ads by Google