Download - ThreadWeaver in KDE Frameworks 5

Transcript
Page 1: ThreadWeaver in KDE Frameworks 5

ThreadWeaver in KDE Frameworks 5Demos, New Features, PerformanceMirko Boehm <[email protected]>Akademy 2013

1Friday, July 19, 13

Page 2: ThreadWeaver in KDE Frameworks 5

Agenda

introduction to ThreadWeaver

key concepts: job aggregates, policies, queues

API changes for Frameworks 5

performance considerations, benchmarks

outlook and new feature quizz

2Friday, July 19, 13

Page 3: ThreadWeaver in KDE Frameworks 5

CWD: ~miroslav@silberpfeil: >whoami

- KDE Contributor since 1997:-- hacking (kdecore, kdepim, applications)-- board member 1999 to 2006-- Desktop Summit 2011- FSFE Team Germany- researching Free Software and Intellectual Property issues at TU Berlin- European Representative, Open Invention Network- Founder/CEO,Endocode AG- married, two kids, lives in BerlinCWD: ~miroslav@silberpfeil: >

3Friday, July 19, 13

Page 4: ThreadWeaver in KDE Frameworks 5

Agenda

introduction to ThreadWeaver

key concepts: job aggregates, policies, queues

API changes for Frameworks 5

performance considerations, benchmarks

outlook and new feature quizz

4Friday, July 19, 13

Page 5: ThreadWeaver in KDE Frameworks 5

Hello WorldDemo time!

5Friday, July 19, 13

Page 6: ThreadWeaver in KDE Frameworks 5

Hello World demo(s)

global ThreadWeaver pool

job memory management

shared pointers

raw pointers, jobs as stack variables

Lambda jobs

6Friday, July 19, 13

Page 7: ThreadWeaver in KDE Frameworks 5

Sequence DemoDemo time!

7Friday, July 19, 13

Page 8: ThreadWeaver in KDE Frameworks 5

Sequence Demo

job aggregates: collections, sequences

job error reporting

sequences abort on failure

signals and slots to communicate

sharing data between jobs

8Friday, July 19, 13

Page 9: ThreadWeaver in KDE Frameworks 5

Image ViewerDemo time!

9Friday, July 19, 13

Page 10: ThreadWeaver in KDE Frameworks 5

Image Viewer

queue policies

resource restrictions

dependencies

job priorities

worker thread count, individual queue instances

10Friday, July 19, 13

Page 11: ThreadWeaver in KDE Frameworks 5

OutlookUse job aggregates to model execution flow graph.(Or: How to draw a sad robot.)

11Friday, July 19, 13

Page 12: ThreadWeaver in KDE Frameworks 5

Agenda

introduction to ThreadWeaver

key concepts: job aggregates, policies, queues

API changes for Frameworks 5

performance considerations, benchmarks

outlook and new feature quizz

12Friday, July 19, 13

Page 13: ThreadWeaver in KDE Frameworks 5

Jobs

units of queueing and execution

shared pointers for memory management

raw pointers for stack variables

success status,

cancellation requests

priorities as a hint to the scheduler

13Friday, July 19, 13

Page 14: ThreadWeaver in KDE Frameworks 5

Queue Policies

decide whether or not a job can be executed

are assigned to jobs

may be shared between jobs or queues

built-ins:

resource restriction policy, dependency policy

custom policies can be implemented

14Friday, July 19, 13

Page 15: ThreadWeaver in KDE Frameworks 5

Queues

manage worker threads

global instance or individual instances

suspend/resume/finish

signaling

15Friday, July 19, 13

Page 16: ThreadWeaver in KDE Frameworks 5

Philosophy

scheduling vs. programmed concurrency

critical path modeling

minimalism (jobs, queueing methods, concepts)

simplicity

16Friday, July 19, 13

Page 17: ThreadWeaver in KDE Frameworks 5

Agenda

introduction to ThreadWeaver

key concepts: job aggregates, policies, queues

API changes for Frameworks 5

performance considerations, benchmarks

outlook and new feature quizz

17Friday, July 19, 13

Page 18: ThreadWeaver in KDE Frameworks 5

API changes

few, but important

shared pointers for jobs

global instance child of QApplication

public Queue class

ExecuteWrapper

all *RunHelper* classes removed

18Friday, July 19, 13

Page 19: ThreadWeaver in KDE Frameworks 5

Agenda

introduction to ThreadWeaver

key concepts: job aggregates, policies, queues

API changes for Frameworks 5

performance considerations, benchmarks

outlook and new feature quizz

19Friday, July 19, 13

Page 20: ThreadWeaver in KDE Frameworks 5

20Friday, July 19, 13

Page 21: ThreadWeaver in KDE Frameworks 5

Agenda

introduction to ThreadWeaver

key concepts: job aggregates, policies, queues

API changes for Frameworks 5

performance considerations, benchmarks

outlook and new feature quizz

21Friday, July 19, 13

Page 22: ThreadWeaver in KDE Frameworks 5

Feature quizz

progress tracking

minijobs

embed QRunnables

Job::execUntilFinished(QEventLoop/QDialog/qApp)

AnyOfCollection

UI elements/visualizations

22Friday, July 19, 13

Page 23: ThreadWeaver in KDE Frameworks 5

Questions?

23Friday, July 19, 13

Page 24: ThreadWeaver in KDE Frameworks 5

References

demos:

github.com/mirkoboehm/ThreadWeaverDemos

benchmarks:

github.com/mirkoboehm/QBenchmarkParser

code:

kdelibs frameworks branch, tier1/threadweaver

24Friday, July 19, 13