X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftalk-event-driven-programming-in-perl;a=blobdiff_plain;f=slides.html;h=745bf127db87dedbe3ae370155dfe02d9c935c1b;hp=4da6ba0c16f4afec585ea38ac1102fa99c2b8b80;hb=61c219d89d10bf7dd3847232d6eed3e90bddd2fe;hpb=a44e9de8d87d4e7bc656f83ac5b6be348ada05f3 diff --git a/slides.html b/slides.html index 4da6ba0..745bf12 100644 --- a/slides.html +++ b/slides.html @@ -444,6 +444,12 @@ while (1) { } ``` +??? +Of course, you don't actually need to know anything about which syscalls are used and how a reactor actually works to do +event-driven programming. (and if any of this is going over your head, that's fine.) + +But I'm covering it because I think it's good for you. + --- class: ex-basicreactor2 @@ -1203,13 +1209,60 @@ my $eventual_future = repeat { ``` --- -## Events in the world +class: center, middle + +## Final thoughts + +--- +class: center, middle + +### Proactor pattern + +??? +We've gone over the Reactor pattern quite a bit, and for good reason. + +It's the predominant implementation of event-driven code in userspace apps. + +But you should also know about the Proactor pattern. + +It's basically the same as the reactor pattern except the event handlers perform asynchronous operations. +- Can be done using special kernel facilities +- or by keeping a thread pool. + +One thing to keep in mind about the reactor pattern is that any sort of blocking that occurs by any event handlers will +slow everything down quite a bit. The proactor pattern can help avoid problems. + +--- +class: center, middle -- Interconnected devices +### Event-driven programming architecture ??? -- Events are everywhere in the world, and our devices can tell other devices about them. - - Interconnected devices (IoT) +Making your apps reactive and able to generate and respond to events is the tip of a very large iceburg. + +- Pubsub systems can be used to distribute events at a massive scale. +- Message queues are components that can be plugged in to provide guaranteed delivery of events. + +Once your programs are event-driven, they're ready to be plugged into a whole world of other services. + +--- +class: center, middle + +### Lots of interconnected devices + +??? +This concept has a trendy name, but I can't say it because I've swarn off buzzwords. + +Event-driven programming and architecture is used as a foundation for building APIs and applications that scale, if +that's important to you. + +You can avoid coupling: When one of your devices has an event, it just needs to notify your world of devices and let the +devices decide what to do. + +For example, if your car has connected sensors, it can notify your devices when you leave the car. Then your phone can +receive that event and notify you that you left your kid in the car. + +So there are a lot of cool applications for this stuff. --- class: center, middle