inversion of control and event loopspsnyder/cs342-summer2017/assets/slides/2… · 17/07/2017  ·...

26
Inversion of Control and Event Loops July 17, 2017

Upload: others

Post on 27-Sep-2020

0 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
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

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

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

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

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

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

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

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

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

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

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