1 / 20

High-level Multithreaded Programming [Part III]

High-level Multithreaded Programming [Part III]. Primo ž Gabrijelčič. Background Information. About Me. Primo ž Gabrijelčič Programmer, consultant, writer, speaker thedelphigeek.com www.glagolite.si/delphi Hacking multithreaded code since 1999. About OmniThreadLibrary.

shana
Download Presentation

High-level Multithreaded Programming [Part III]

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. High-level Multithreaded Programming [Part III] Primož Gabrijelčič

  2. Background Information

  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 • ParallelTask • BackgroundWorker • Pipeline • ForkJoin • Async [/Await] • Future • Join • ForEach

  7. Which abstraction to use? • Consider data flow!

  8. High-Level Abstractions • ParallelTask • BackgroundWorker • ForkJoin • Pipeline • Async [/Await] • Future • Join • ForEach • 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. Aggregation 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 • ParallelTask • BackgroundWorker • ForkJoin • Pipeline • Async [/Await] • Future • Join • ForEach • Parallelization of multistage operations

  15. Pipeline

  16. Example

  17. Web Spider

  18. Parting Notes

  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

More Related