1 / 20

High-Level Multithreaded Programming: Webinars and Insights by Primož Gabrijelčič

Explore the intricacies of high-level multithreaded programming with Primož Gabrijelčič in this comprehensive webinar series. Learn about OmniThreadLibrary, high-level abstractions like ParallelTask, BackgroundWorker, and Pipeline. Understand the considerations for data flow in parallel coding and how to effectively utilize multithreading to optimize your software. Each session provides valuable coding examples and insights, helping you master the art of multithreading in Delphi. Join us and enhance your programming skills today!

shana
Télécharger la présentation

High-Level Multithreaded Programming: Webinars and Insights by Primož Gabrijelčič

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