High level multithreaded programming part i
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

High-level Multithreaded Programming [Part I] PowerPoint PPT Presentation


  • 55 Views
  • Uploaded on
  • Presentation posted in: General

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.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


High level multithreaded programming part i

High-level Multithreaded Programming [Part I]

Primož Gabrijelčič


Background information

Background Information


About me

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


About omnithreadlibrary

About OmniThreadLibrary

  • „VCL for multithreading“

  • Delphi 2007 – XE3[4]

  • Open source – OpenBSD license

    • www.omnithreadlibrary.com

    • omnithreadlibrary.googlecode.com

  • Win32/Win64


About the webinars

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


Installation

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


Documentation

Documentation

  • Blog tutorials

  • “The book”

  • Presentations

  • Forum

  • Google+: OmniThreadLibrary

  • @TheDelphiGeek: #omnithreadlibrary

    www.omnithreadlibrary.com


Why multithreading

Why Multithreading?

  • Improve performance

  • Improve responsiveness


High level abstractions

High-Level Abstractions


High level multithreaded programming part i

Why?

  • Designing parallel solutions is hard

  • Writing multithreaded code is hard

  • Testing multithreaded applications is hard

  • Debugging multithreaded code is pure …


High level multithreaded programming part i

INSANITY!


Otl to the rescue

OTL to the Rescue!

  • Well-tested components …

  • packed in reusable classes …

  • with high-level parallel programming support.


High level abstractions1

High-Level Abstractions

  • ParallelTask

  • BackgroundWorker

  • ForkJoin

  • Pipeline

  • Async [/Await]

  • Future

  • Join

  • ForEach


Which abstraction to use

Which abstraction to use?

  • Consider data flow!


High level abstractions2

High-Level Abstractions

  • ParallelTask

  • BackgroundWorker

  • ForkJoin

  • Pipeline

  • Async [/Await]

  • Future

  • Join

  • ForEach

Start background task and continue


Async await

Async [/Await]


High level abstractions3

High-Level Abstractions

  • ParallelTask

  • BackgroundWorker

  • ForkJoin

  • Pipeline

  • Async [/Await]

  • Future

  • Join

  • ForEach

  • Start background calculation and retrieve the result


Future

Future


High level abstractions4

High-Level Abstractions

  • ParallelTask

  • BackgroundWorker

  • ForkJoin

  • Pipeline

  • Async [/Await]

  • Future

  • Join

  • ForEach

  • Start multiple background tasks [and wait]


High level multithreaded programming part i

Join


Parting notes

Parting Notes


Keep in mind

Keep in Mind

  • Don’t parallelize everything

  • Rethink the algorithm

  • Data flow dictates the abstraction

  • Measure the improvements

  • Test, test and test


Code and video

Code and Video

www.omnithreadlibrary.com/webinars


  • Login