inversion of control and event loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 ·...
TRANSCRIPT
![Page 1: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/1.jpg)
Inversion of Control and Event Loops
July 17, 2017
![Page 2: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/2.jpg)
Homework 5
![Page 3: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/3.jpg)
Homework 5• Deadline extended to Wednesday, July 19
• Chance to discuss
• Regular expressions
• Parsing strategies
• Useful techniques
![Page 4: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/4.jpg)
Example Approach
1. Preprocess input to handle known problems
1.1. Abbreviations
1.2. Nested sentences
2. Iteratively identify longest possible strings
3. Post-process result to undo transformations
![Page 5: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/5.jpg)
Event Loops and Inversion of Control
![Page 6: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/6.jpg)
Responsive Programming
• We want programs to respond quickly
• Web Services
• GUIs
• Sometimes, responsiveness > speed
![Page 7: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/7.jpg)
servers/BlockingServer.java –>
![Page 8: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/8.jpg)
I/O Latency• L1: 3 cycles
• L2: 14 cycles
• RAM: 250 cycles
• DISK: 41,000,000 cycles
• NETWORK: 240,000,000 cycles
Slide by Ryan Dahl,https://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf
![Page 9: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/9.jpg)
Responsiveness Issues
• Waiting (blocking) kills responsiveness
• Identify where the program waits
• Allow it to do other things
![Page 10: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/10.jpg)
What "Blocks" / "Waits"?
![Page 11: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/11.jpg)
Blocking Operations
• sleep()
• read()
• write()
• connect() / accept() / etc
![Page 12: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/12.jpg)
Responsiveness, Step 1
• Threading
• 1 thread for each request
• Kernel switches execution for us
![Page 13: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/13.jpg)
servers/ThreadedServer.java –>
![Page 14: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/14.jpg)
Threading Issues?• Threads scale, but not infinitely
• More overhead in leaning on the kernel
• around 1-10k threads, and you'll have problems
• Stack memory
• Switching overhead
![Page 15: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/15.jpg)
![Page 16: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/16.jpg)
10k Threads, Really?• Popular web services
• 100k-10m concurrent users
• GUIs
• User events
• Timers
• Application events
![Page 17: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/17.jpg)
Insight
• Threads create a lot of "work" just to wait
• Stack memory
• Context information
• More intelligent way to wait?
![Page 18: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/18.jpg)
Event Loop
![Page 19: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/19.jpg)
Event Loop
• Invert Control
• Register Handlers
• Have system switch during anything that blocks / waits
![Page 20: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/20.jpg)
Inversion of Control
• Also know as "async" programming
• Register code that happens on events
• Have system call that code when that event happens
• Until it happens, keep doing other things
![Page 21: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/21.jpg)
inversion-of-control/Read{Blocking, Async}.java –>
![Page 22: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/22.jpg)
Pattern in Async / Event Loops
• Register for events
• Wait for the system to call our code
• Rely on the system to do all the scheduling for us
![Page 23: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/23.jpg)
servers/AsyncServer.java –>
![Page 24: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/24.jpg)
GUI Applications
• Generally written using Async
• Register for events (onClick, onAppear, onScroll)
• Wait for the system to call us
![Page 25: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/25.jpg)
android-BasicNetworking/* –>
![Page 26: Inversion of Control and Event Loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017 · Inversion of Control • Also know as "async" programming • Register code that](https://reader034.vdocuments.mx/reader034/viewer/2022052001/60140f34a767583dbb1ca7c3/html5/thumbnails/26.jpg)
☕