SlideShare une entreprise Scribd logo
1  sur  141
Télécharger pour lire hors ligne
ASYNC, AWAIT, OH… WAIT!
YOU’D BETTER WATCH YOUR STEP
December 2016 – Alt.Net Paris
@tpierrain (use case driven)
“USE CASE DRIVEN”, BUT ALSO…
• Reactive Programmer (> 10 years)
• eXtreme Programmer (> 10 years)
• Programmer (> 18 years)
@tpierrain
NFluent Value (DDD)
LET’S START WITH A QUESTION…
LET’S START WITH A QUESTION…
Q:What happens line 24, when await occurs?
OUPS! LET’S ADD SOME CONTEXT
LET’S START WITH A QUESTION…
Q:What happens line 24, when await occurs?
LET’S START WITH A QUESTION…
Q:What happens line 24, when await occurs?
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
21
LET’S START WITH A QUESTION…
21
LET’S START WITH A QUESTION…
2
1
LET’S START WITH A QUESTION…
1
2
LET’S START WITH A QUESTION…
1
2
LET’S START WITH A QUESTION…
1
2
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
2
LET’S START WITH A QUESTION…
2
1
LET’S START WITH A QUESTION…
2
1
LET’S START WITH A QUESTION…
2
1
LET’S START WITH A QUESTION…
2
1
LET’S START WITH A QUESTION…
2 1
LET’S START WITH A QUESTION…
2 11
LET’S START WITH A QUESTION…
1
LET’S START WITH A QUESTION…
1
WAS ITYOUR FIRST ANSWER?
Replay?
GUESS WHAT…
SAME CODE IN ASP.NET OR UI CONTEXT
WILL DEADLOCK!
OH… WAIT! AGENDA
1. Why
2. What
3. How
4. Pitfalls & Recommendations
CHAPTER 1: WHY
LIKE ME, YOU DON’T LIKE WASTE?
A SIMPLE RULE TO AVOID WASTE OF CPU
ASYNC-AWAIT INTENTION IS...
…TO EASILYTRANSFORM
SYNCHRONOUS CODE  ASYNCHRONOUS CODE
(WITHOUT HURTINGYOUR EXISTING CODE STRUCTURE)
WITHOUT HURTINGYOUR EXISTING CODE
STRUCTURE
WAIT A MINUTE… ASYNCHRONOUS,
CONCURRENT, PARALLEL?
SYNCHRONOUS
• PERFORM something here
and now.
• The caller thread will be
blocked until it’s done
ASYNCHRONOUS
• INITIATE something here and
now (off-loading).
• The caller thread is released
immediately
• Free for something else
• No waste of CPU resource ;-)
SYNCHRONOUS
• PERFORM
THIS IS ABOUT INVOCATION!
(NOT ABOUT HOWTHE GODDAMNTHING IS EXECUTED)
ASYNCHRONOUS
• INITIATE
WHAT ABOUT EXECUTION
CONCURRENCY
• Multiple “threads” of execution
• Independent logical segments
CONCURRENCY PARALLELISM
CONCURRENCY
+
SIMULTANEOUS EXECUTION
• Multiple “threads” of execution
• Independent logical segments
CONCURRENCY
THIS IS ABOUT EXECUTION!
(OFTHE GODDAMNTHING ;-)
PARALLELISM
CONCURRENCY
+
SIMULTANEOUS EXECUTION
• Multiple “threads” of execution
• Independent logical segments
CHAPTER 2: WHAT
ASYNC-AWAIT IS NOT ABOUT GOING ASYNC
ASYNC-AWAIT IS ABOUT COMPOSINGTHE ASYNC
COMPOSINGTHE ASYNC
WITH TASK CONTINUATIONS
CHAPTER 3: HOW
(PREREQUISITE - TPL)
TASK PARALLEL LIBRARY REMINDER (TPL)
• 3 ways to instantiate and run aTASK:
• var task =Task.Run(lambda);
• var task = newTask(lambda).Start();
• Task.Factory.StartNew(lambda);
TASK PARALLEL LIBRARY REMINDER (TPL)
• 3 ways to instantiate and run aTASK:
• var task =Task.Run(lambda);
• var task = newTask(lambda).Start();
• Task.Factory.StartNew(lambda);
TASK PARALLEL LIBRARY REMINDER (TPL)
• 3 ways to instantiate and run aTASK:
• var task =Task.Run(lambda);
• var task = newTask(lambda).Start();
• Task.Factory.StartNew(lambda);
• task.Wait(), task.Result & task.Exception ( all blocking ;-(
TASK PARALLEL LIBRARY REMINDER (TPL)
• CONTINUATION
• ATask that will be achieve once a previousTask has finished
• var continuationTask = previousTask.ContinueWith(lambda);
PreviousTask
ContinuationTask
ASYNC-AWAIT
ASYNC-AWAIT
ASYNC
GENERATES STATE MACHINE
AWAIT
MARKS A CONTINUATION
ASYNC
ASYNC GENERATES STATE MACHINE
AT COMPILETIME
ASYNC GENERATES STATE MACHINE
AT COMPILETIME
ASYNC
GENERATES STATE MACHINE
AT COMPILETIME
ASYNC
GENERATES STATE MACHINE
AWAIT
AWAIT
MARKS A CONTINUATION
AWAIT
RETURNSTOTHE CALLER WITH A CONTINUATIONTASK
WHO’S DOING THE CONTINUATION?
WELL… IT DEPENDS ;-)
IT DEPENDS ON THE AWAITER CONTEXT
The following code:
IT DEPENDS ON THE AWAITER CONTEXT
The following code:
Is equivalent to:
WinForms,
WPF,
ASP.NET…
ASYNC-AWAIT
GENERATES STATE MACHINE
MARKS A CONTINUATION
THREAD(S) OR NOTHREAD?
WINDOWS I/O: UNDER THE HOOD
WINDOWS I/O: UNDER THE HOOD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
UI thread
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
BCL.WriteAsync()
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
P/Invoke
handle
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Create
I/O Request
Packet (IRP)
(asynchronous)
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
ReturnTask
(await)
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Release UI
thread
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
NOTHREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Interrupt!
NOTHREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Interrupt
Service
Routine (ISR)
NOTHREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Queue
Deferred
Procedure Call
(DPC).
NOTHREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Mark IRP
as completed
NOTHREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Create
Asynchronous
Procedure Call
(APC)
to notify the UI
process (handle)
NOTHREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Execute
APC via I/O
Completion port
(IOCP) thread
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Execute
APC via I/O
Completion port
(IOCP) thread
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Post the
continuation for
UI thread
execution
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Execute
continuation
(UI thread)
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Execute
continuation
(UI thread)
THREAD
WINDOWS I/O: UNDER THE HOOD
User mode
Kernel mode
Replay?
CHAPTER 4: PITFALLS & RECOS
#1: DEADLOCK
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
21
INITIAL QUESTION, BUT IN A GUI CONTEXT
21
INITIAL QUESTION, BUT IN A GUI CONTEXT
2
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
2
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
2
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
2
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
2
INITIAL QUESTION, BUT IN A GUI CONTEXT
1
x
INITIAL QUESTION, BUT IN A GUI CONTEXT
The GUI case
1
x
INITIAL QUESTION, BUT IN A GUI CONTEXT
DEADLOCKS
THE DUPDOB PRINCIPLE
“QUI DIT LOCKS…
DIT DEADLOCKS”
“WHOEVER LOCKS…
EVENTUALLY DEADLOCKS”
@cyrdup
DEADLOCK MEME
DEADLOCK MEME
DEADLOCK MEME
DO NOT BLOCKTO AVOID DEADLOCK
DO NOT BLOCK TO AVOID DEADLOCK
« AWAIT » DON’T BLOCKTHE UITHREAD
YOU CODE A LIBRARY?
SYNCHRONIZATION CONTEXT IS NOTYOUR DECISION!
AVOID DEADLOCKS IMPROVE PERFORMANCE
USE CONFIGUREAWAIT(FALSE) EVERYWHERE!
YOU CODE A LIBRARY?
USE CONFIGUREAWAIT(FALSE) EVERYWHERE!
#2: ENTER THE ASYNC VOID
THE ASYNC VOID CASE
• Async void is a “fire-and-forget” mechanism...
• The caller is unable to know when an async void has finished
• The caller is unable to catch exceptions thrown from an async void
• (instead they get posted to the UI message-loop)
THE ASYNC VOID CASE
• Async void is a “fire-and-forget” mechanism...
• The caller is unable to know when an async void has finished
• The caller is unable to catch exceptions thrown from an async void
• (instead they get posted to the UI message-loop)
TRY-CATCH YOUR EVENT HANDLERS!
MS GUIDELINES
• Use async void methods only for top-level event handlers (and their like)
• Use asyncTask-returning methods everywhere else
• Try-Catch your Async event handlers!
MS EVEN SAID:
#3: USE IT WISELY
ONLY FOR I/O!
WRAP-UP
WRAP-UP
1. Never block! Unless you want to deadlock
• Locks, Wait without timeout,Task.Result…
• Use top-level await when coding UI or Web
• Use ConfigureAwait(false) everywhere within your libraries
2. Never create « async void » methods
• And try catch all such existing event handlers
3. Only for I/Os
DON’T USE ASYNC-AWAIT
UNLESSYOU UNDERSTAND HOW ITWORKS
THANKS!
APPENDIX
DON’T SYSTEMATIZE ASYNC-AWAIT?
NOTHING INTHE CONTINUATION?
NO NEED FOR AWAIT! (UNLESS FOR ‘USING’)
StateMachine
StateMachine
StateMachine
StateMachine
StateMachine
ASYNC METHOD GC IMPACT
• 3 allocations for every Async method
• Heap-allocated state machine
• With a field for every local variable in your method
• Completion delegate
• Task
TROUBLESHOOTING?
Namespace
public type nested type static method
FEW REFS
• Bart De Smet deep dive: https://channel9.msdn.com/Events/TechDays/Techdays-2014-the-
Netherlands/Async-programming-deep-dive
• Filip Ekberg at Oredev 2016: https://vimeo.com/191077931
• Async-Await Best practices: https://msdn.microsoft.com/en-us/magazine/jj991977.aspx
• Compiler error: http://stackoverflow.com/questions/12115168/why-does-this-async-await-
code-generate-not-all-code-paths-return-a-value
• Task.Run etiquette: http://blog.stephencleary.com/2013/11/taskrun-etiquette-examples-
dont-use.html
• There is no thread: http://blog.stephencleary.com/2013/11/there-is-no-thread.html
• Does usingTasks (TPL) library make an application multithreaded? :
http://stackoverflow.com/questions/23833255/does-using-tasks-tpl-library-make-an-
application-multithreaded
• Eliding Async-Await : http://blog.stephencleary.com/2016/12/eliding-async-await.html
Async await...oh wait!

Contenu connexe

Tendances

Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Advanced Topics On Sql Injection Protection
Advanced Topics On Sql Injection ProtectionAdvanced Topics On Sql Injection Protection
Advanced Topics On Sql Injection Protectionamiable_indian
 
Lock-free algorithms for Kotlin Coroutines
Lock-free algorithms for Kotlin CoroutinesLock-free algorithms for Kotlin Coroutines
Lock-free algorithms for Kotlin CoroutinesRoman Elizarov
 
Java - programmation concurrente
Java - programmation concurrenteJava - programmation concurrente
Java - programmation concurrenteFranck SIMON
 
CNIT 123 8: Desktop and Server OS Vulnerabilities
CNIT 123 8: Desktop and Server OS VulnerabilitiesCNIT 123 8: Desktop and Server OS Vulnerabilities
CNIT 123 8: Desktop and Server OS VulnerabilitiesSam Bowne
 
Introduction to Python Celery
Introduction to Python CeleryIntroduction to Python Celery
Introduction to Python CeleryMahendra M
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacksRespa Peter
 
ORM2Pwn: Exploiting injections in Hibernate ORM
ORM2Pwn: Exploiting injections in Hibernate ORMORM2Pwn: Exploiting injections in Hibernate ORM
ORM2Pwn: Exploiting injections in Hibernate ORMMikhail Egorov
 
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)Svetlin Nakov
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixVictor Rentea
 
Collections Framework
Collections FrameworkCollections Framework
Collections FrameworkSunil OS
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in javaPratik Soares
 
An Introduction to Celery
An Introduction to CeleryAn Introduction to Celery
An Introduction to CeleryIdan Gazit
 

Tendances (20)

Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Advanced Topics On Sql Injection Protection
Advanced Topics On Sql Injection ProtectionAdvanced Topics On Sql Injection Protection
Advanced Topics On Sql Injection Protection
 
Lock-free algorithms for Kotlin Coroutines
Lock-free algorithms for Kotlin CoroutinesLock-free algorithms for Kotlin Coroutines
Lock-free algorithms for Kotlin Coroutines
 
Java - programmation concurrente
Java - programmation concurrenteJava - programmation concurrente
Java - programmation concurrente
 
Python Programming Essentials - M27 - Logging module
Python Programming Essentials - M27 - Logging modulePython Programming Essentials - M27 - Logging module
Python Programming Essentials - M27 - Logging module
 
CNIT 123 8: Desktop and Server OS Vulnerabilities
CNIT 123 8: Desktop and Server OS VulnerabilitiesCNIT 123 8: Desktop and Server OS Vulnerabilities
CNIT 123 8: Desktop and Server OS Vulnerabilities
 
Introduction to Python Celery
Introduction to Python CeleryIntroduction to Python Celery
Introduction to Python Celery
 
Java 8 - DateTime
Java 8 - DateTimeJava 8 - DateTime
Java 8 - DateTime
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacks
 
PlantUML introduction
PlantUML introductionPlantUML introduction
PlantUML introduction
 
Java RMI
Java RMIJava RMI
Java RMI
 
Android Fragment
Android FragmentAndroid Fragment
Android Fragment
 
ORM2Pwn: Exploiting injections in Hibernate ORM
ORM2Pwn: Exploiting injections in Hibernate ORMORM2Pwn: Exploiting injections in Hibernate ORM
ORM2Pwn: Exploiting injections in Hibernate ORM
 
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
 
Understanding NMAP
Understanding NMAPUnderstanding NMAP
Understanding NMAP
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflix
 
Collections Framework
Collections FrameworkCollections Framework
Collections Framework
 
Clean code
Clean codeClean code
Clean code
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
An Introduction to Celery
An Introduction to CeleryAn Introduction to Celery
An Introduction to Celery
 

En vedette

Faible latence, haut debit PerfUG (Septembre 2014)
Faible latence, haut debit PerfUG (Septembre 2014)Faible latence, haut debit PerfUG (Septembre 2014)
Faible latence, haut debit PerfUG (Septembre 2014)Thomas Pierrain
 
Decouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event stormingDecouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event stormingThomas Pierrain
 
Docker and Windows: The State of the Union
Docker and Windows: The State of the UnionDocker and Windows: The State of the Union
Docker and Windows: The State of the UnionElton Stoneman
 
Sortir de notre zone de confort
Sortir de notre zone de confortSortir de notre zone de confort
Sortir de notre zone de confortThomas Pierrain
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueThomas Pierrain
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...Javier García Magna
 
Windows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should CareWindows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should CareElton Stoneman
 
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with SagasQCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with SagasChris Richardson
 
.NET Inside - Microservices, .NET Core e Serverless
.NET Inside - Microservices, .NET Core e Serverless.NET Inside - Microservices, .NET Core e Serverless
.NET Inside - Microservices, .NET Core e ServerlessUlili Emerson Martins Nhaga
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for MicroservicesChris Richardson
 
TDD is dead?!? Let's do an autospy (ncrafts.io)
TDD is dead?!? Let's do an autospy (ncrafts.io)TDD is dead?!? Let's do an autospy (ncrafts.io)
TDD is dead?!? Let's do an autospy (ncrafts.io)Thomas Pierrain
 
Faible latence haut debit Devoxx FR 2014
Faible latence haut debit Devoxx FR 2014Faible latence haut debit Devoxx FR 2014
Faible latence haut debit Devoxx FR 2014Thomas Pierrain
 
Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)Thomas Pierrain
 
Culture craft humantalks
Culture craft humantalksCulture craft humantalks
Culture craft humantalksThomas Pierrain
 
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with DockerThe Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with DockerElton Stoneman
 
Coder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architectureCoder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architectureThomas Pierrain
 
CQRS without event sourcing
CQRS without event sourcingCQRS without event sourcing
CQRS without event sourcingThomas Pierrain
 
Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...Chris Richardson
 
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Chris Richardson
 
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...Chris Richardson
 

En vedette (20)

Faible latence, haut debit PerfUG (Septembre 2014)
Faible latence, haut debit PerfUG (Septembre 2014)Faible latence, haut debit PerfUG (Septembre 2014)
Faible latence, haut debit PerfUG (Septembre 2014)
 
Decouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event stormingDecouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event storming
 
Docker and Windows: The State of the Union
Docker and Windows: The State of the UnionDocker and Windows: The State of the Union
Docker and Windows: The State of the Union
 
Sortir de notre zone de confort
Sortir de notre zone de confortSortir de notre zone de confort
Sortir de notre zone de confort
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
 
Windows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should CareWindows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should Care
 
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with SagasQCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
 
.NET Inside - Microservices, .NET Core e Serverless
.NET Inside - Microservices, .NET Core e Serverless.NET Inside - Microservices, .NET Core e Serverless
.NET Inside - Microservices, .NET Core e Serverless
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
TDD is dead?!? Let's do an autospy (ncrafts.io)
TDD is dead?!? Let's do an autospy (ncrafts.io)TDD is dead?!? Let's do an autospy (ncrafts.io)
TDD is dead?!? Let's do an autospy (ncrafts.io)
 
Faible latence haut debit Devoxx FR 2014
Faible latence haut debit Devoxx FR 2014Faible latence haut debit Devoxx FR 2014
Faible latence haut debit Devoxx FR 2014
 
Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)
 
Culture craft humantalks
Culture craft humantalksCulture craft humantalks
Culture craft humantalks
 
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with DockerThe Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
 
Coder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architectureCoder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architecture
 
CQRS without event sourcing
CQRS without event sourcingCQRS without event sourcing
CQRS without event sourcing
 
Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...
 
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
 
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
 

Similaire à Async await...oh wait!

Task parallel library presentation
Task parallel library presentationTask parallel library presentation
Task parallel library presentationahmed sayed
 
.NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование...
.NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование....NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование...
.NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование...NETFest
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsjacekbecela
 
Is persistency on serverless even possible?!
Is persistency on serverless even possible?!Is persistency on serverless even possible?!
Is persistency on serverless even possible?!SecuRing
 
Need for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applicationsNeed for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applicationsKonrad Malawski
 
Exception+Logging=Diagnostics 2011
Exception+Logging=Diagnostics 2011Exception+Logging=Diagnostics 2011
Exception+Logging=Diagnostics 2011Paulo Gaspar
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012 Erik Onnen
 
End to-end async and await
End to-end async and awaitEnd to-end async and await
End to-end async and awaitvfabro
 
Sangam 18 - Database Development: Return of the SQL Jedi
Sangam 18 - Database Development: Return of the SQL JediSangam 18 - Database Development: Return of the SQL Jedi
Sangam 18 - Database Development: Return of the SQL JediConnor McDonald
 
Car hacking 101 rev2
Car hacking 101 rev2Car hacking 101 rev2
Car hacking 101 rev2ZachZaffis
 
SPARKNaCl: A verified, fast cryptographic library
SPARKNaCl: A verified, fast cryptographic librarySPARKNaCl: A verified, fast cryptographic library
SPARKNaCl: A verified, fast cryptographic libraryAdaCore
 
Asynchronous Programming.pptx
Asynchronous Programming.pptxAsynchronous Programming.pptx
Asynchronous Programming.pptxAayush Chimaniya
 
Begin with c++ Fekra Course #1
Begin with c++ Fekra Course #1Begin with c++ Fekra Course #1
Begin with c++ Fekra Course #1Amr Alaa El Deen
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraDataStax Academy
 
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
 
The Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldThe Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldKonrad Malawski
 
C# Async/Await Explained
C# Async/Await ExplainedC# Async/Await Explained
C# Async/Await ExplainedJeremy Likness
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANciMike Friedman
 

Similaire à Async await...oh wait! (20)

Task parallel library presentation
Task parallel library presentationTask parallel library presentation
Task parallel library presentation
 
.NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование...
.NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование....NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование...
.NET Fest 2018. Владимир Крамар. Многопоточное и асинхронное программирование...
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Is persistency on serverless even possible?!
Is persistency on serverless even possible?!Is persistency on serverless even possible?!
Is persistency on serverless even possible?!
 
Need for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applicationsNeed for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applications
 
Exception+Logging=Diagnostics 2011
Exception+Logging=Diagnostics 2011Exception+Logging=Diagnostics 2011
Exception+Logging=Diagnostics 2011
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
 
End to-end async and await
End to-end async and awaitEnd to-end async and await
End to-end async and await
 
Sangam 18 - Database Development: Return of the SQL Jedi
Sangam 18 - Database Development: Return of the SQL JediSangam 18 - Database Development: Return of the SQL Jedi
Sangam 18 - Database Development: Return of the SQL Jedi
 
Training – Going Async
Training – Going AsyncTraining – Going Async
Training – Going Async
 
Car hacking 101 rev2
Car hacking 101 rev2Car hacking 101 rev2
Car hacking 101 rev2
 
JS Event Loop
JS Event LoopJS Event Loop
JS Event Loop
 
SPARKNaCl: A verified, fast cryptographic library
SPARKNaCl: A verified, fast cryptographic librarySPARKNaCl: A verified, fast cryptographic library
SPARKNaCl: A verified, fast cryptographic library
 
Asynchronous Programming.pptx
Asynchronous Programming.pptxAsynchronous Programming.pptx
Asynchronous Programming.pptx
 
Begin with c++ Fekra Course #1
Begin with c++ Fekra Course #1Begin with c++ Fekra Course #1
Begin with c++ Fekra Course #1
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
 
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
 
The Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldThe Need for Async @ ScalaWorld
The Need for Async @ ScalaWorld
 
C# Async/Await Explained
C# Async/Await ExplainedC# Async/Await Explained
C# Async/Await Explained
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci
 

Plus de Thomas Pierrain

The scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarineThe scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarineThomas Pierrain
 
La scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaireLa scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaireThomas Pierrain
 
De l'autre côté du miroir
De l'autre côté du miroirDe l'autre côté du miroir
De l'autre côté du miroirThomas Pierrain
 
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDDWrite Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDDThomas Pierrain
 
Beyond Hexagonal architecture
Beyond Hexagonal architectureBeyond Hexagonal architecture
Beyond Hexagonal architectureThomas Pierrain
 
The 9 rules of debugging
The 9 rules of debuggingThe 9 rules of debugging
The 9 rules of debuggingThomas Pierrain
 
Hexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shellHexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shellThomas Pierrain
 
Une nuit dans l'hexagone
Une nuit dans l'hexagoneUne nuit dans l'hexagone
Une nuit dans l'hexagoneThomas Pierrain
 
As time goes by (episode 2)
As time goes by (episode 2)As time goes by (episode 2)
As time goes by (episode 2)Thomas Pierrain
 
Et si on parlait Éthique ?
Et si on parlait Éthique ?Et si on parlait Éthique ?
Et si on parlait Éthique ?Thomas Pierrain
 
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettreL'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettreThomas Pierrain
 
Legacy club (english version)
Legacy club (english version)Legacy club (english version)
Legacy club (english version)Thomas Pierrain
 
The art of Software Design
The art of Software DesignThe art of Software Design
The art of Software DesignThomas Pierrain
 
Culture Craft Devoxx 2015
Culture Craft Devoxx 2015Culture Craft Devoxx 2015
Culture Craft Devoxx 2015Thomas Pierrain
 

Plus de Thomas Pierrain (17)

The scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarineThe scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarine
 
Hexagonal And Beyond
Hexagonal And BeyondHexagonal And Beyond
Hexagonal And Beyond
 
La scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaireLa scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaire
 
De l'autre côté du miroir
De l'autre côté du miroirDe l'autre côté du miroir
De l'autre côté du miroir
 
eXtreme
eXtremeeXtreme
eXtreme
 
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDDWrite Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
 
Beyond Hexagonal architecture
Beyond Hexagonal architectureBeyond Hexagonal architecture
Beyond Hexagonal architecture
 
The 9 rules of debugging
The 9 rules of debuggingThe 9 rules of debugging
The 9 rules of debugging
 
Hexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shellHexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shell
 
Une nuit dans l'hexagone
Une nuit dans l'hexagoneUne nuit dans l'hexagone
Une nuit dans l'hexagone
 
Equiper sa voie
Equiper sa voieEquiper sa voie
Equiper sa voie
 
As time goes by (episode 2)
As time goes by (episode 2)As time goes by (episode 2)
As time goes by (episode 2)
 
Et si on parlait Éthique ?
Et si on parlait Éthique ?Et si on parlait Éthique ?
Et si on parlait Éthique ?
 
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettreL'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
 
Legacy club (english version)
Legacy club (english version)Legacy club (english version)
Legacy club (english version)
 
The art of Software Design
The art of Software DesignThe art of Software Design
The art of Software Design
 
Culture Craft Devoxx 2015
Culture Craft Devoxx 2015Culture Craft Devoxx 2015
Culture Craft Devoxx 2015
 

Dernier

Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 

Dernier (20)

Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 

Async await...oh wait!

Notes de l'éditeur

  1. Ref: http://www.world-of-knives.ch/public/media/filer_thumbnails/2011/11/14/fk-140wh-wh_5_5_3.jpg__663x372_q80_crop-1_upscale-1.jpg
  2. Ref: http://images.martechadvisor.com/images/uploads/content_images/cbc928ab5eb5e7f00676992442650b40.jpg
  3. Ref:http://i.imgur.com/ZnREN.jpg
  4. Ref: http://blog.canacad.ac.jp/wpmu/15matser/files/2013/06/FoodWaste1.jpg
  5. Ref : http://www.careofcars.com/wp-content/uploads/2014/01/patchwork-on-cheap-cars.jpg
  6. Ref: http://ci.memecdn.com/7869512.jpg
  7. Refs : - https://cdn3.iconfinder.com/data/icons/basic-mobile-part-3/512/prisoner-512.png - https://cdn4.iconfinder.com/data/icons/human-values-solid/100/_-62-512.png - https://d30y9cdsu7xlg0.cloudfront.net/png/89995-200.png
  8. Refs : - https://cdn3.iconfinder.com/data/icons/basic-mobile-part-3/512/prisoner-512.png - https://cdn4.iconfinder.com/data/icons/human-values-solid/100/_-62-512.png - https://d30y9cdsu7xlg0.cloudfront.net/png/89995-200.png
  9. Not OS threads e.g.: JavaScript in a browser Node.js e.g.: Thread-based (e.g. multi-threading) Task-based (e.g. TPL)
  10. Not OS threads e.g.: JavaScript in a browser Node.js e.g.: Thread-based (e.g. multi-threading) Task-based (e.g. TPL)
  11. Not OS threads e.g.: JavaScript in a browser Node.js e.g.: Thread-based (e.g. multi-threading) Task-based (e.g. TPL)
  12. Refs : - https://cdn3.iconfinder.com/data/icons/basic-mobile-part-3/512/prisoner-512.png - https://d30y9cdsu7xlg0.cloudfront.net/png/89995-200.png
  13. Ref: https://static1.squarespace.com/static/544d2af6e4b007f43083a5b0/544e719be4b07c493b25c4e4/54625440e4b0f79db69b3b1a/1417724183061/?format=1500w
  14. Ref: http://www.designnation.de/Media/Galerie/50cf9c1d197e0,Houston-we-have-a-problem.jpg
  15. Ref: https://avatars1.githubusercontent.com/u/3131866?v=3&s=460
  16. Ref: http://ci.memecdn.com/7869512.jpg
  17. Ref: http://ci.memecdn.com/7869512.jpg
  18. Ref: http://ci.memecdn.com/7869512.jpg