SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
EMBARCADERO	
  TECHNOLOGIESEMBARCADERO	
  TECHNOLOGIES
Deep	
  Dive	
  into	
  	
  
Futures	
  and	
  the	
  PPL
Jim	
  McKeeth	
  
Lead	
  World	
  Wide	
  Developer	
  Evangelist	
  /	
  Engineer	
  
jim.mckeeth@embarcadero.com	
  
@JimMcKeeth	
  
Tuesday,	
  the	
  10rd	
  February,	
  2015
EMBARCADERO	
  TECHNOLOGIES
This	
  Skill	
  Sprint	
  Works	
  with	
  .	
  .	
  .
Windows	
  
Mac	
  OS	
  X	
  
Android	
  
iOS	
  
RAD	
  Studio	
  
Appmethod	
  
Object	
  Pascal	
  
C++
• RAD	
  Studio	
  XE7	
  DocWiki	
  
– http://embt.co/latestdocwiki	
  

http://docwiki.embarcadero.com/RADStudio/en/	
  	
  
• Appmethod	
  September	
  2014	
  DocWiki	
  
– http://embt.co/AppmethodTopics	
  

http://docwiki.appmethod.com/appmethod/topics/en/	
  
• Appmethod	
  supports	
  the	
  FireMonkey	
  
framework	
  on	
  all	
  4	
  platforms	
  while	
  RAD	
  Studio,	
  
Delphi	
  and	
  C++Builder	
  also	
  support	
  VCL	
  on	
  
Windows.	
  Contact	
  sales	
  with	
  any	
  questions!OP
C++
EMBARCADERO	
  TECHNOLOGIES
The	
  Parallel	
  Programming	
  Library	
  (PPL)
• Part	
  of	
  the	
  Run-­‐Time	
  Library	
  (RTL)	
  in	
  System.Threading	
  
• Self-­‐tuning	
  thread	
  pool	
  (based	
  on	
  CPU	
  and	
  Load)	
  
• Support	
  for:	
  
• Parallel	
  For	
  Loops	
  
• Tasks	
  -­‐	
  Units	
  of	
  work	
  
• Custom	
  Thread	
  Pools	
  
• Futures	
  -­‐	
  Async	
  values
(Last	
  week)	
  
Part	
  1	
  
Part	
  2	
  
Part	
  3
EMBARCADERO	
  TECHNOLOGIES
Last	
  Week’s	
  Skill	
  Sprint
• Parallel	
  For	
  Loops	
  
• TInterlocked.Increment	
  
• TThread.Queue	
  
• TThread.Synchronize	
  	
  
• For	
  more	
  information:	
  http://delphi.org/?p=1886	
  
4
EMBARCADERO	
  TECHNOLOGIES
5 Tasks - Asynchronous Units of Work
EMBARCADERO	
  TECHNOLOGIES
The	
  TTask	
  Class	
  for	
  Asynchronous	
  Work	
  
• A	
  Task	
  is	
  a	
  unit	
  of	
  work	
  to	
  be	
  done	
  
• Not	
  specific	
  to	
  an	
  individual	
  thread	
  
• Implements	
  ITask	
  with	
  Start,	
  Wait,	
  Cancel	
  and	
  Status	
  
• Statuses:	
  Created,	
  WaitingToRun,	
  Running,	
  
Completed,	
  WaitingForChildren,	
  Canceled,	
  Exception	
  
• Provides	
  WaitForAll	
  and	
  WaitForAny	
  methods
EMBARCADERO	
  TECHNOLOGIES
WaitForAll	
  Task	
  Syntax
var	
  	
  
	
  	
  tasks:	
  array	
  of	
  ITask;	
  	
  
begin	
  	
  
	
  	
  SetLength	
  (tasks,	
  2);	
  	
  
	
  	
  
	
  	
  tasks[0]	
  :=	
  TTask.Create	
  (procedure	
  ()	
  begin	
  {Long	
  running	
  work}	
  end);	
  	
  
	
  	
  tasks[1]	
  :=	
  TTask.Create	
  (procedure	
  ()	
  begin	
  	
  
	
  	
  	
  	
  {	
  Other	
  long	
  running	
  work	
  }	
  	
  
	
  	
  end);	
  
	
  	
  tasks[0].Start;	
  	
  
	
  	
  tasks[1].Start;	
  
	
  	
  
	
  	
  TTask.WaitForAll(tasks);	
  //	
  Blocks	
  until	
  completion	
  
end;
OP
1	
  
2	
  
3	
  
4	
  
5	
  
6	
  
7	
  
9
EMBARCADERO	
  TECHNOLOGIES
WaitForAll	
  Task	
  Syntax
{	
  
	
  	
  _di_ITask	
  tasks[2];	
  
	
  	
  
	
  	
  	
  tasks[0]	
  =	
  TTask::Create(_di_TProc(new	
  TCppTask(3000,	
  Label1)));	
  
	
  	
  	
  tasks[1]	
  =	
  TTask::Create(_di_TProc(new	
  TCppTask(5000,	
  Label1)));	
  
	
  	
  	
  tasks[0]-­‐>Start();	
  
	
  	
  	
  tasks[1]-­‐>Start();	
  
	
  	
  
	
  	
  	
  TTask::WaitForAll(tasks,(sizeof(tasks)/sizeof(tasks[0])-­‐1));	
  
	
  	
  	
  ShowMessage("All	
  done!");	
  
}
C++
1	
  
2	
  
3	
  
4	
  
5	
  
6	
  
7
EMBARCADERO	
  TECHNOLOGIES
9 Customizing the Thread Pool
EMBARCADERO	
  TECHNOLOGIES
Construct	
  a	
  New	
  Thread	
  Pool
• Construct	
  new	
  TTheadPool	
  
• Customize	
  Min	
  &	
  Max	
  
worker	
  threads	
  
• Pass	
  as	
  last	
  optional	
  
parameter	
  to	
  Parallel	
  For,	
  
Task	
  or	
  Future	
  
• Generally	
  better	
  off	
  using	
  
default	
  thread	
  pool10
var	
  
	
  	
  FPool	
  :	
  TThreadPool;	
  
//…	
  
if	
  FPool	
  =	
  nil	
  then	
  begin	
  
	
  	
  FPool	
  :=	
  TThreadPool.Create;	
  
	
  	
  FPool.SetMaxWorkerThreads(10);	
  
end;	
  
//…	
  Use	
  FPool
EMBARCADERO	
  TECHNOLOGIES
Customizing	
  the	
  Thread	
  Pool
• Customizing	
  the	
  default	
  is	
  discouraged:	
  TThreadPool.Default	
  	
  
• SetMaxWorkerThreads(Value:	
  Integer):	
  Boolean;	
  
• Returns	
  false	
  if	
  attempting	
  to	
  set	
  a	
  value	
  smaller	
  than	
  the	
  number	
  of	
  processors.	
  Setting	
  
this	
  value	
  too	
  high	
  can	
  lead	
  problems	
  with	
  other	
  libraries	
  and	
  processes.	
  If	
  too	
  many	
  
threads	
  execute	
  at	
  the	
  same	
  time,	
  task/thread	
  switching	
  overhead	
  can	
  become	
  restrictive.	
  
• SetMinWorkerThreads(Value:	
  Integer):	
  Boolean;	
  
• Returns	
  false	
  if	
  attempting	
  to	
  set	
  a	
  value	
  <	
  0	
  or	
  >	
  MaxWorkerThreads.	
  The	
  actual	
  number	
  
of	
  pool	
  threads	
  could	
  be	
  less	
  than	
  this	
  value	
  depending	
  on	
  actual	
  demand.	
  Setting	
  this	
  to	
  
too	
  few	
  threads	
  could	
  be	
  less	
  than	
  optimal	
  resource	
  utilization.	
  
• property	
  MaxWorkerThreads:	
  Integer	
  
• property	
  MinWorkerThreads:	
  Integer
EMBARCADERO	
  TECHNOLOGIES
12 Futures - Calculating Values Asynchronously
EMBARCADERO	
  TECHNOLOGIES
Futures	
  -­‐	
  Calculating	
  Values	
  Asynchronously
• Future:	
  Essentially	
  a	
  Task	
  that	
  returns	
  a	
  result	
  value	
  
• A	
  future	
  is	
  to	
  a	
  task	
  as	
  a	
  function	
  is	
  to	
  a	
  procedure	
  
• Future	
  is	
  defined	
  with	
  Generic	
  Type	
  of	
  the	
  result	
  
• Calculates	
  result	
  in	
  the	
  background	
  asynchronously	
  
• Will	
  block	
  on	
  read	
  if	
  not	
  finished	
  
• Special	
  instructions	
  to	
  enable	
  for	
  C++	
  (see	
  download)
EMBARCADERO	
  TECHNOLOGIES
Future	
  Syntax
var	
  	
  
	
  	
  FutureString:	
  IFuture<string>;	
  
//	
  .	
  .	
  .	
  
	
  	
  FutureString	
  :=	
  TTask.Future<string>(	
  
	
  	
  	
  	
  function:string	
  
	
  	
  	
  	
  begin	
  
	
  	
  	
  	
  	
  	
  Result	
  :=	
  DoRESTCall(editArtist.Text);	
  
	
  	
  	
  	
  end);	
  
//	
  .	
  .	
  .	
  
	
  	
  ResultsMemo.Text	
  :=	
  FutureString.Value;
OP
1	
  
2	
  
3	
  
4	
  
5
EMBARCADERO	
  TECHNOLOGIES
DEMONSTRATION
Tasks	
  and	
  Futures
EMBARCADERO	
  TECHNOLOGIES
16
Background	
  by	
  Tdvance	
  used	
  under	
  CC-­‐BY-­‐SA	
  2.5	
  
Font	
  from	
  http://www.dafont.com/back-­‐to-­‐the-­‐future.font	
  
EMBARCADERO	
  TECHNOLOGIES
Review:	
  Futures	
  and	
  the	
  PPL
• Uses	
  System.Threading	
  unit	
  
• Self-­‐tuning	
  thread	
  pool	
  (based	
  on	
  CPU	
  and	
  Load)	
  
• Tasks	
  are	
  asynchronous	
  units	
  of	
  work	
  
• Futures	
  allow	
  asynchronous	
  value	
  calculation	
  
• Customizable	
  Thread	
  Pools
EMBARCADERO	
  TECHNOLOGIES
PPL	
  Resources
• Samples	
  
– C:UsersPublicDocumentsEmbarcaderoStudio15.0SamplesObject	
  PascalRTLParallel	
  Library	
  
– C:UsersPublicDocumentsEmbarcaderoStudio15.0SamplesCPPRTLParallel	
  Library	
  
• DocWiki	
  Overview	
  
– http://docwiki.embarcadero.com/RADStudio/en/Using_the_Parallel_Programming_Library	
  	
  
• Blog	
  Posts	
  
– CodeRage	
  9	
  Video	
  http://dannywind.nl/delphi/coderage9/	
  	
  
– Stephen	
  Ball’s	
  series	
  http://delphiaball.co.uk/tag/parallel-­‐programming/	
  	
  
– Malcolm	
  Groves’	
  series	
  http://www.malcolmgroves.com/blog/?cat=109	
  	
  
– Examples,	
  links	
  and	
  more:	
  http://delphi.org/?p=1914	
  (Including	
  the	
  C++	
  Lambda	
  links)
Special	
  offers:	
  http://
embarcadero.com/radoffer/	
  
EMBARCADERO	
  TECHNOLOGIES
Next	
  Time….
• FireDAC:	
  Array	
  DML	
  
• Submit	
  a	
  single	
  DBMS	
  command	
  with	
  an	
  array	
  of	
  parameters	
  
• Each	
  command	
  parameter	
  has	
  an	
  array	
  of	
  values	
  
• All	
  parameters	
  have	
  arrays	
  of	
  the	
  same	
  length	
  
• Thursday	
  the	
  12th
	
  of	
  February	
  
– 6AM	
  San	
  Francisco	
  /	
  9AM	
  New	
  York	
  /	
  2PM	
  London	
  /	
  3PM	
  Milan	
  
– 11AM	
  San	
  Francisco	
  /	
  2PM	
  New	
  York	
  /	
  7PM	
  London	
  /	
  8PM	
  Milan	
  
– 5PM	
  San	
  Francisco	
  /	
  Fri	
  9AM	
  Tokyo	
  /	
  Fri	
  10AM	
  Sydney
Sign-­‐up:	
  http://www.embarcadero.com/landing-­‐pages/skill-­‐sprints	
  
2nd	
  Reg	
  Form
EMBARCADERO	
  TECHNOLOGIES
• Separating	
  App	
  Logic	
  from	
  the	
  UI	
  	
  
• Promotes	
  Healthy	
  Apps	
  
• How	
  to	
  use	
  Common	
  Patterns	
  
• Tuesday	
  the	
  17th	
  of	
  February	
  
– 6AM	
  San	
  Francisco	
  /	
  9AM	
  New	
  York	
  /	
  2PM	
  London	
  /	
  3PM	
  Milan	
  
– 11AM	
  San	
  Francisco	
  /	
  2PM	
  New	
  York	
  /	
  7PM	
  London	
  /	
  8PM	
  Milan	
  
– 5PM	
  San	
  Francisco	
  /	
  Wed	
  9AM	
  Tokyo	
  /	
  Wed	
  10AM	
  Sydney
Next	
  Time….
Special	
  offers:	
  http://embarcadero.com/radoffer/	
  
EMBARCADERO	
  TECHNOLOGIES
RAD	
  Studio	
  XE7	
  Special	
  Offers
More	
  details	
  http://www.embarcadero.com/radoffer
Save	
  45%	
  when	
  
upgrading	
  from	
  any	
  
previous	
  version	
  
When	
  you	
  purchase	
  the	
  upgrade	
  
with	
  1	
  year	
  Support	
  and	
  
Maintenance!
Build	
  a	
  Mobile	
  Platform	
  
for	
  the	
  Enterprise	
  
With	
  Enterprise	
  edition	
  or	
  higher.
Powerful	
  Tools	
  to	
  Boost	
  Your	
  
Coding	
  (Worth	
  Over	
  $700)	
  
• New	
  Object	
  Pascal	
  Handbook	
  by	
  
Marco	
  Cantu	
  	
  
• Castalia	
  for	
  Delphi	
  2014.11	
  
• VCL	
  and	
  FireMonkey	
  Premium	
  Styles	
  
• Mida	
  Converter	
  Basic
EMBARCADERO	
  TECHNOLOGIESEMBARCADERO	
  TECHNOLOGIES
Q	
  &	
  A	
  
@EmbarcaderoTech
Special	
  offers:	
  http://embarcadero.com/radoffer/	
  

Mais conteúdo relacionado

Mais procurados

iOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editioniOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editionJorge Ortiz
 
Next Generation Automation in Ruckus Wireless
Next Generation Automation in Ruckus WirelessNext Generation Automation in Ruckus Wireless
Next Generation Automation in Ruckus WirelessDavid Ko
 
EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11Chauvin Mariot
 
An intuitive guide to combining free monad and free applicative
An intuitive guide to combining free monad and free applicativeAn intuitive guide to combining free monad and free applicative
An intuitive guide to combining free monad and free applicativeCameron Joannidis
 
C# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin
C# Async on iOS and Android - Miguel de Icaza, CTO of XamarinC# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin
C# Async on iOS and Android - Miguel de Icaza, CTO of XamarinXamarin
 
Async Await for Mobile Apps
Async Await for Mobile AppsAsync Await for Mobile Apps
Async Await for Mobile AppsCraig Dunn
 
Async CTP 3 Presentation for MUGH 2012
Async CTP 3 Presentation for MUGH 2012Async CTP 3 Presentation for MUGH 2012
Async CTP 3 Presentation for MUGH 2012Sri Kanth
 
Rtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetesRtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetesSandeep Deshmukh
 
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at XamarinC# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at XamarinXamarin
 
Using Async in your Mobile Apps - Marek Safar
Using Async in your Mobile Apps - Marek SafarUsing Async in your Mobile Apps - Marek Safar
Using Async in your Mobile Apps - Marek SafarXamarin
 
Jenkins & Hipchat integration
Jenkins & Hipchat integrationJenkins & Hipchat integration
Jenkins & Hipchat integrationMohit Tater
 
Android development at mercari 2015
Android development at mercari 2015Android development at mercari 2015
Android development at mercari 2015Tomoaki Imai
 
Brief introduction to Angular 2.0 & 4.0
Brief introduction to Angular 2.0 & 4.0Brief introduction to Angular 2.0 & 4.0
Brief introduction to Angular 2.0 & 4.0Nisheed Jagadish
 
9th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 20219th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 2021Ryan Anthony Andal
 
Automating stateful applications with kubernetes operators - Openstack Summit...
Automating stateful applications with kubernetes operators - Openstack Summit...Automating stateful applications with kubernetes operators - Openstack Summit...
Automating stateful applications with kubernetes operators - Openstack Summit...Jorge Morales
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020Eran Stiller
 
GitHub as a Landing Page
GitHub as a Landing Page GitHub as a Landing Page
GitHub as a Landing Page Pronovix
 

Mais procurados (20)

iOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editioniOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h edition
 
Next Generation Automation in Ruckus Wireless
Next Generation Automation in Ruckus WirelessNext Generation Automation in Ruckus Wireless
Next Generation Automation in Ruckus Wireless
 
EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11
 
An intuitive guide to combining free monad and free applicative
An intuitive guide to combining free monad and free applicativeAn intuitive guide to combining free monad and free applicative
An intuitive guide to combining free monad and free applicative
 
C# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin
C# Async on iOS and Android - Miguel de Icaza, CTO of XamarinC# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin
C# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin
 
Async Await for Mobile Apps
Async Await for Mobile AppsAsync Await for Mobile Apps
Async Await for Mobile Apps
 
Async CTP 3 Presentation for MUGH 2012
Async CTP 3 Presentation for MUGH 2012Async CTP 3 Presentation for MUGH 2012
Async CTP 3 Presentation for MUGH 2012
 
Rtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetesRtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetes
 
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at XamarinC# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
C# Async on iOS and Android - Craig Dunn, Developer Evangelist at Xamarin
 
Using Async in your Mobile Apps - Marek Safar
Using Async in your Mobile Apps - Marek SafarUsing Async in your Mobile Apps - Marek Safar
Using Async in your Mobile Apps - Marek Safar
 
Jenkins & Hipchat integration
Jenkins & Hipchat integrationJenkins & Hipchat integration
Jenkins & Hipchat integration
 
Android development at mercari 2015
Android development at mercari 2015Android development at mercari 2015
Android development at mercari 2015
 
Brief introduction to Angular 2.0 & 4.0
Brief introduction to Angular 2.0 & 4.0Brief introduction to Angular 2.0 & 4.0
Brief introduction to Angular 2.0 & 4.0
 
9th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 20219th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 2021
 
Jenkins Reviewbot
Jenkins ReviewbotJenkins Reviewbot
Jenkins Reviewbot
 
Automating stateful applications with kubernetes operators - Openstack Summit...
Automating stateful applications with kubernetes operators - Openstack Summit...Automating stateful applications with kubernetes operators - Openstack Summit...
Automating stateful applications with kubernetes operators - Openstack Summit...
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020
 
SignalR with asp.net
SignalR with asp.netSignalR with asp.net
SignalR with asp.net
 
GitHub as a Landing Page
GitHub as a Landing Page GitHub as a Landing Page
GitHub as a Landing Page
 
Lecture 12
Lecture 12Lecture 12
Lecture 12
 

Destaque

Day 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep DiveDay 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep DiveJim McKeeth
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
Rancangan anggaran rumah tangga
Rancangan anggaran rumah tanggaRancangan anggaran rumah tangga
Rancangan anggaran rumah tanggaToto Wirjosoemarto
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected DevelopmentJim McKeeth
 
Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...
Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...
Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...Julia Lebedeva
 
Resources and Lessons on Open Data from the World Bank
Resources and Lessons on Open Data from the World BankResources and Lessons on Open Data from the World Bank
Resources and Lessons on Open Data from the World Banktariqkhokhar
 
Newton-Einstein
Newton-EinsteinNewton-Einstein
Newton-EinsteinSam Ardi
 
"Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ...
"Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ..."Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ...
"Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ...Julia Lebedeva
 
Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014
Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014
Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014Toto Wirjosoemarto
 
Php Conference 2012 concrete5
Php Conference 2012 concrete5Php Conference 2012 concrete5
Php Conference 2012 concrete5Hishikawa Takuro
 
Scramble2
Scramble2Scramble2
Scramble2lmielke
 
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)Tyo SBS
 
Timmy's Tea Shop Photo Essay
Timmy's Tea Shop Photo EssayTimmy's Tea Shop Photo Essay
Timmy's Tea Shop Photo EssayISYGrade6
 
世界再大也要回家
世界再大也要回家世界再大也要回家
世界再大也要回家政瑜 王
 
Материалы выступления В.М. Демина
Материалы выступления В.М. Демина Материалы выступления В.М. Демина
Материалы выступления В.М. Демина AcademiaSpb
 
9911092浙江省成人教育與職業教育協會參訪本校農場牧場
9911092浙江省成人教育與職業教育協會參訪本校農場牧場9911092浙江省成人教育與職業教育協會參訪本校農場牧場
9911092浙江省成人教育與職業教育協會參訪本校農場牧場政瑜 王
 

Destaque (20)

Day 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep DiveDay 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep Dive
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Rancangan anggaran rumah tangga
Rancangan anggaran rumah tanggaRancangan anggaran rumah tangga
Rancangan anggaran rumah tangga
 
Sinterklaas ahoi
Sinterklaas ahoi Sinterklaas ahoi
Sinterklaas ahoi
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected Development
 
Dosi1988
Dosi1988Dosi1988
Dosi1988
 
Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...
Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...
Opera Mobile Store: Opportunities for Developers and Partners, Сандра Ильина,...
 
Resources and Lessons on Open Data from the World Bank
Resources and Lessons on Open Data from the World BankResources and Lessons on Open Data from the World Bank
Resources and Lessons on Open Data from the World Bank
 
Newton-Einstein
Newton-EinsteinNewton-Einstein
Newton-Einstein
 
"Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ...
"Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ..."Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ...
"Рынок мобильных игр: обзор, тенденции, тренды" Павел Ряйкконен, директор по ...
 
Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014
Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014
Mr. Tatsuya Yanagi presentation on OVOP - Yogyakarta Workshop 2014
 
Php Conference 2012 concrete5
Php Conference 2012 concrete5Php Conference 2012 concrete5
Php Conference 2012 concrete5
 
Scramble2
Scramble2Scramble2
Scramble2
 
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
 
Catch the Light
Catch the LightCatch the Light
Catch the Light
 
Timmy's Tea Shop Photo Essay
Timmy's Tea Shop Photo EssayTimmy's Tea Shop Photo Essay
Timmy's Tea Shop Photo Essay
 
世界再大也要回家
世界再大也要回家世界再大也要回家
世界再大也要回家
 
Материалы выступления В.М. Демина
Материалы выступления В.М. Демина Материалы выступления В.М. Демина
Материалы выступления В.М. Демина
 
AssoSCAI @brianzaamica
AssoSCAI @brianzaamicaAssoSCAI @brianzaamica
AssoSCAI @brianzaamica
 
9911092浙江省成人教育與職業教育協會參訪本校農場牧場
9911092浙江省成人教育與職業教育協會參訪本校農場牧場9911092浙江省成人教育與職業教育協會參訪本校農場牧場
9911092浙江省成人教育與職業教育協會參訪本校農場牧場
 

Semelhante a Deep Dive into Futures and the Parallel Programming Library

Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.Angelos Petheriotis
 
CDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaCCDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaCsmalltown
 
Speeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCCSpeeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCCinside-BigData.com
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_netNico Ludwig
 
Hadoop cluster performance profiler
Hadoop cluster performance profilerHadoop cluster performance profiler
Hadoop cluster performance profilerIhor Bobak
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustEvan Chan
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET CoreTamir Dresher
 
Profiling & Testing with Spark
Profiling & Testing with SparkProfiling & Testing with Spark
Profiling & Testing with SparkRoger Rafanell Mas
 
A New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDKA New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDKShu-Jeng Hsieh
 
Terraform Modules Restructured
Terraform Modules RestructuredTerraform Modules Restructured
Terraform Modules RestructuredDoiT International
 
Terraform modules restructured
Terraform modules restructuredTerraform modules restructured
Terraform modules restructuredAmi Mahloof
 
Example Cosmos SDK Application Tutorial
Example Cosmos SDK Application TutorialExample Cosmos SDK Application Tutorial
Example Cosmos SDK Application TutorialJim Yang
 
From Zero to Hero - All you need to do serious deep learning stuff in R
From Zero to Hero - All you need to do serious deep learning stuff in R From Zero to Hero - All you need to do serious deep learning stuff in R
From Zero to Hero - All you need to do serious deep learning stuff in R Kai Lichtenberg
 

Semelhante a Deep Dive into Futures and the Parallel Programming Library (20)

Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.
 
Von neumann workers
Von neumann workersVon neumann workers
Von neumann workers
 
CS4961-L9.ppt
CS4961-L9.pptCS4961-L9.ppt
CS4961-L9.ppt
 
CDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaCCDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaC
 
Speeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCCSpeeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCC
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net
 
Hadoop cluster performance profiler
Hadoop cluster performance profilerHadoop cluster performance profiler
Hadoop cluster performance profiler
 
Mini-Training: TypeScript
Mini-Training: TypeScriptMini-Training: TypeScript
Mini-Training: TypeScript
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to Rust
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
S emb t13-freertos
S emb t13-freertosS emb t13-freertos
S emb t13-freertos
 
An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0
 
Dsp lab manual 15 11-2016
Dsp lab manual 15 11-2016Dsp lab manual 15 11-2016
Dsp lab manual 15 11-2016
 
Typesafe spark- Zalando meetup
Typesafe spark- Zalando meetupTypesafe spark- Zalando meetup
Typesafe spark- Zalando meetup
 
Profiling & Testing with Spark
Profiling & Testing with SparkProfiling & Testing with Spark
Profiling & Testing with Spark
 
A New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDKA New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDK
 
Terraform Modules Restructured
Terraform Modules RestructuredTerraform Modules Restructured
Terraform Modules Restructured
 
Terraform modules restructured
Terraform modules restructuredTerraform modules restructured
Terraform modules restructured
 
Example Cosmos SDK Application Tutorial
Example Cosmos SDK Application TutorialExample Cosmos SDK Application Tutorial
Example Cosmos SDK Application Tutorial
 
From Zero to Hero - All you need to do serious deep learning stuff in R
From Zero to Hero - All you need to do serious deep learning stuff in R From Zero to Hero - All you need to do serious deep learning stuff in R
From Zero to Hero - All you need to do serious deep learning stuff in R
 

Mais de Jim McKeeth

Smart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond BitcoinSmart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond BitcoinJim McKeeth
 
Rapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open HardwareRapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open HardwareJim McKeeth
 
Day 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to MobileDay 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to MobileJim McKeeth
 
Building a Thought Controlled Drone
Building a Thought Controlled DroneBuilding a Thought Controlled Drone
Building a Thought Controlled DroneJim McKeeth
 
The Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoTThe Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoTJim McKeeth
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Jim McKeeth
 
Android voice skill sprint
Android voice skill sprintAndroid voice skill sprint
Android voice skill sprintJim McKeeth
 
Exploring the Brain Computer Interface
Exploring the Brain Computer InterfaceExploring the Brain Computer Interface
Exploring the Brain Computer InterfaceJim McKeeth
 
Introduction to Android Development with Java
Introduction to Android Development with JavaIntroduction to Android Development with Java
Introduction to Android Development with JavaJim McKeeth
 
Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!Jim McKeeth
 
Inventing merit badge
Inventing merit badgeInventing merit badge
Inventing merit badgeJim McKeeth
 

Mais de Jim McKeeth (11)

Smart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond BitcoinSmart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond Bitcoin
 
Rapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open HardwareRapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
 
Day 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to MobileDay 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to Mobile
 
Building a Thought Controlled Drone
Building a Thought Controlled DroneBuilding a Thought Controlled Drone
Building a Thought Controlled Drone
 
The Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoTThe Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoT
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
 
Android voice skill sprint
Android voice skill sprintAndroid voice skill sprint
Android voice skill sprint
 
Exploring the Brain Computer Interface
Exploring the Brain Computer InterfaceExploring the Brain Computer Interface
Exploring the Brain Computer Interface
 
Introduction to Android Development with Java
Introduction to Android Development with JavaIntroduction to Android Development with Java
Introduction to Android Development with Java
 
Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!
 
Inventing merit badge
Inventing merit badgeInventing merit badge
Inventing merit badge
 

Último

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Último (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Deep Dive into Futures and the Parallel Programming Library

  • 1. EMBARCADERO  TECHNOLOGIESEMBARCADERO  TECHNOLOGIES Deep  Dive  into     Futures  and  the  PPL Jim  McKeeth   Lead  World  Wide  Developer  Evangelist  /  Engineer   jim.mckeeth@embarcadero.com   @JimMcKeeth   Tuesday,  the  10rd  February,  2015
  • 2. EMBARCADERO  TECHNOLOGIES This  Skill  Sprint  Works  with  .  .  . Windows   Mac  OS  X   Android   iOS   RAD  Studio   Appmethod   Object  Pascal   C++ • RAD  Studio  XE7  DocWiki   – http://embt.co/latestdocwiki  
 http://docwiki.embarcadero.com/RADStudio/en/     • Appmethod  September  2014  DocWiki   – http://embt.co/AppmethodTopics  
 http://docwiki.appmethod.com/appmethod/topics/en/   • Appmethod  supports  the  FireMonkey   framework  on  all  4  platforms  while  RAD  Studio,   Delphi  and  C++Builder  also  support  VCL  on   Windows.  Contact  sales  with  any  questions!OP C++
  • 3. EMBARCADERO  TECHNOLOGIES The  Parallel  Programming  Library  (PPL) • Part  of  the  Run-­‐Time  Library  (RTL)  in  System.Threading   • Self-­‐tuning  thread  pool  (based  on  CPU  and  Load)   • Support  for:   • Parallel  For  Loops   • Tasks  -­‐  Units  of  work   • Custom  Thread  Pools   • Futures  -­‐  Async  values (Last  week)   Part  1   Part  2   Part  3
  • 4. EMBARCADERO  TECHNOLOGIES Last  Week’s  Skill  Sprint • Parallel  For  Loops   • TInterlocked.Increment   • TThread.Queue   • TThread.Synchronize     • For  more  information:  http://delphi.org/?p=1886   4
  • 5. EMBARCADERO  TECHNOLOGIES 5 Tasks - Asynchronous Units of Work
  • 6. EMBARCADERO  TECHNOLOGIES The  TTask  Class  for  Asynchronous  Work   • A  Task  is  a  unit  of  work  to  be  done   • Not  specific  to  an  individual  thread   • Implements  ITask  with  Start,  Wait,  Cancel  and  Status   • Statuses:  Created,  WaitingToRun,  Running,   Completed,  WaitingForChildren,  Canceled,  Exception   • Provides  WaitForAll  and  WaitForAny  methods
  • 7. EMBARCADERO  TECHNOLOGIES WaitForAll  Task  Syntax var        tasks:  array  of  ITask;     begin        SetLength  (tasks,  2);            tasks[0]  :=  TTask.Create  (procedure  ()  begin  {Long  running  work}  end);        tasks[1]  :=  TTask.Create  (procedure  ()  begin            {  Other  long  running  work  }        end);      tasks[0].Start;        tasks[1].Start;          TTask.WaitForAll(tasks);  //  Blocks  until  completion   end; OP 1   2   3   4   5   6   7   9
  • 8. EMBARCADERO  TECHNOLOGIES WaitForAll  Task  Syntax {      _di_ITask  tasks[2];            tasks[0]  =  TTask::Create(_di_TProc(new  TCppTask(3000,  Label1)));        tasks[1]  =  TTask::Create(_di_TProc(new  TCppTask(5000,  Label1)));        tasks[0]-­‐>Start();        tasks[1]-­‐>Start();            TTask::WaitForAll(tasks,(sizeof(tasks)/sizeof(tasks[0])-­‐1));        ShowMessage("All  done!");   } C++ 1   2   3   4   5   6   7
  • 10. EMBARCADERO  TECHNOLOGIES Construct  a  New  Thread  Pool • Construct  new  TTheadPool   • Customize  Min  &  Max   worker  threads   • Pass  as  last  optional   parameter  to  Parallel  For,   Task  or  Future   • Generally  better  off  using   default  thread  pool10 var      FPool  :  TThreadPool;   //…   if  FPool  =  nil  then  begin      FPool  :=  TThreadPool.Create;      FPool.SetMaxWorkerThreads(10);   end;   //…  Use  FPool
  • 11. EMBARCADERO  TECHNOLOGIES Customizing  the  Thread  Pool • Customizing  the  default  is  discouraged:  TThreadPool.Default     • SetMaxWorkerThreads(Value:  Integer):  Boolean;   • Returns  false  if  attempting  to  set  a  value  smaller  than  the  number  of  processors.  Setting   this  value  too  high  can  lead  problems  with  other  libraries  and  processes.  If  too  many   threads  execute  at  the  same  time,  task/thread  switching  overhead  can  become  restrictive.   • SetMinWorkerThreads(Value:  Integer):  Boolean;   • Returns  false  if  attempting  to  set  a  value  <  0  or  >  MaxWorkerThreads.  The  actual  number   of  pool  threads  could  be  less  than  this  value  depending  on  actual  demand.  Setting  this  to   too  few  threads  could  be  less  than  optimal  resource  utilization.   • property  MaxWorkerThreads:  Integer   • property  MinWorkerThreads:  Integer
  • 12. EMBARCADERO  TECHNOLOGIES 12 Futures - Calculating Values Asynchronously
  • 13. EMBARCADERO  TECHNOLOGIES Futures  -­‐  Calculating  Values  Asynchronously • Future:  Essentially  a  Task  that  returns  a  result  value   • A  future  is  to  a  task  as  a  function  is  to  a  procedure   • Future  is  defined  with  Generic  Type  of  the  result   • Calculates  result  in  the  background  asynchronously   • Will  block  on  read  if  not  finished   • Special  instructions  to  enable  for  C++  (see  download)
  • 14. EMBARCADERO  TECHNOLOGIES Future  Syntax var        FutureString:  IFuture<string>;   //  .  .  .      FutureString  :=  TTask.Future<string>(          function:string          begin              Result  :=  DoRESTCall(editArtist.Text);          end);   //  .  .  .      ResultsMemo.Text  :=  FutureString.Value; OP 1   2   3   4   5
  • 16. EMBARCADERO  TECHNOLOGIES 16 Background  by  Tdvance  used  under  CC-­‐BY-­‐SA  2.5   Font  from  http://www.dafont.com/back-­‐to-­‐the-­‐future.font  
  • 17. EMBARCADERO  TECHNOLOGIES Review:  Futures  and  the  PPL • Uses  System.Threading  unit   • Self-­‐tuning  thread  pool  (based  on  CPU  and  Load)   • Tasks  are  asynchronous  units  of  work   • Futures  allow  asynchronous  value  calculation   • Customizable  Thread  Pools
  • 18. EMBARCADERO  TECHNOLOGIES PPL  Resources • Samples   – C:UsersPublicDocumentsEmbarcaderoStudio15.0SamplesObject  PascalRTLParallel  Library   – C:UsersPublicDocumentsEmbarcaderoStudio15.0SamplesCPPRTLParallel  Library   • DocWiki  Overview   – http://docwiki.embarcadero.com/RADStudio/en/Using_the_Parallel_Programming_Library     • Blog  Posts   – CodeRage  9  Video  http://dannywind.nl/delphi/coderage9/     – Stephen  Ball’s  series  http://delphiaball.co.uk/tag/parallel-­‐programming/     – Malcolm  Groves’  series  http://www.malcolmgroves.com/blog/?cat=109     – Examples,  links  and  more:  http://delphi.org/?p=1914  (Including  the  C++  Lambda  links) Special  offers:  http:// embarcadero.com/radoffer/  
  • 19. EMBARCADERO  TECHNOLOGIES Next  Time…. • FireDAC:  Array  DML   • Submit  a  single  DBMS  command  with  an  array  of  parameters   • Each  command  parameter  has  an  array  of  values   • All  parameters  have  arrays  of  the  same  length   • Thursday  the  12th  of  February   – 6AM  San  Francisco  /  9AM  New  York  /  2PM  London  /  3PM  Milan   – 11AM  San  Francisco  /  2PM  New  York  /  7PM  London  /  8PM  Milan   – 5PM  San  Francisco  /  Fri  9AM  Tokyo  /  Fri  10AM  Sydney Sign-­‐up:  http://www.embarcadero.com/landing-­‐pages/skill-­‐sprints   2nd  Reg  Form
  • 20. EMBARCADERO  TECHNOLOGIES • Separating  App  Logic  from  the  UI     • Promotes  Healthy  Apps   • How  to  use  Common  Patterns   • Tuesday  the  17th  of  February   – 6AM  San  Francisco  /  9AM  New  York  /  2PM  London  /  3PM  Milan   – 11AM  San  Francisco  /  2PM  New  York  /  7PM  London  /  8PM  Milan   – 5PM  San  Francisco  /  Wed  9AM  Tokyo  /  Wed  10AM  Sydney Next  Time…. Special  offers:  http://embarcadero.com/radoffer/  
  • 21. EMBARCADERO  TECHNOLOGIES RAD  Studio  XE7  Special  Offers More  details  http://www.embarcadero.com/radoffer Save  45%  when   upgrading  from  any   previous  version   When  you  purchase  the  upgrade   with  1  year  Support  and   Maintenance! Build  a  Mobile  Platform   for  the  Enterprise   With  Enterprise  edition  or  higher. Powerful  Tools  to  Boost  Your   Coding  (Worth  Over  $700)   • New  Object  Pascal  Handbook  by   Marco  Cantu     • Castalia  for  Delphi  2014.11   • VCL  and  FireMonkey  Premium  Styles   • Mida  Converter  Basic
  • 22. EMBARCADERO  TECHNOLOGIESEMBARCADERO  TECHNOLOGIES Q  &  A   @EmbarcaderoTech Special  offers:  http://embarcadero.com/radoffer/