1 / 23

High-level Multithreaded Programming [Part I]

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

axl
Download Presentation

High-level Multithreaded Programming [Part 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 I] Primož Gabrijelčič

  2. Background Information

  3. About Me • Primož Gabrijelčič • Programmer, consultant, writer, speaker • thedelphigeek.com • www.glagolite.si/delphi • Working with Delphi since Delphi 1 • 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, bundles! • 20 free books, courtesy of the De Novo Software, www.denovosoftware.com

  6. Installation • Download the installation package from the Google Code or checkout the SVN repository • Add installation folder and its src subfolder to the project search path or Win32/64 library path • Add the OtlParallel unit to the uses list

  7. Documentation • Blog tutorials • “The book” • Presentations • Forum • Google+: OmniThreadLibrary • @TheDelphiGeek: #omnithreadlibrary www.omnithreadlibrary.com

  8. Why Multithreading? • Improve performance • Improve responsiveness

  9. High-Level Abstractions

  10. Why? • Designing parallel solutions is hard • Writing multithreaded code is hard • Testing multithreaded applications is hard • Debugging multithreaded code is pure …

  11. INSANITY!

  12. OTL to the Rescue! • Well-tested components … • packed in reusable classes … • with high-level parallel programming support.

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

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

  15. High-Level Abstractions • ParallelTask • BackgroundWorker • ForkJoin • Pipeline • Async [/Await] • Future • Join • ForEach Start background task and continue

  16. Async [/Await]

  17. High-Level Abstractions • ParallelTask • BackgroundWorker • ForkJoin • Pipeline • Async [/Await] • Future • Join • ForEach • Start background calculation and retrieve the result

  18. Future

  19. High-Level Abstractions • ParallelTask • BackgroundWorker • ForkJoin • Pipeline • Async [/Await] • Future • Join • ForEach • Start multiple background tasks [and wait]

  20. Join

  21. Parting Notes

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

  23. Code and Video www.omnithreadlibrary.com/webinars

More Related