Concurrent Applications with F# Agents

1,469 views

Published on

To build today's responsive and scalable applications, developers need to start leveraging asynchronous programming methods. During this talk, we'll explore how developers can easily use the F# agent-based programming model, which is based upon the actor concurrency model first made popular in Erlang, to simply and quickly build concurrent applications.

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,469
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Concurrent Applications with F# Agents

  1. 1. Concurrent Applications with F# Agents presented by Rachel Reese Twitter #fsharp #codemash @rachelreese @fireflylogic
  2. 2. What are F# agents? F#’s implementation of Erlang-style message passing (also in Clojure, Scala, Elixir (and many others)) [But there are differences.]
  3. 3. What is Erlangstyle message passing? Erlang’s message passing is based on the actor model devised by Carl Hewitt et al. in 1973.
  4. 4. dynamic creation of actors What is the actor model? inclusion of actor addresses in messages interaction only through direct asynchronous message passing no restriction on message arrival order
  5. 5. An actor is an independent computational entity which contains a queue, and receives and processes messages. What is an actor? Everything is an Actor
  6. 6. Determine what to do with the next incoming message What can an actor do? Create more actors Send messages to another actor
  7. 7. “One actor is no actor. They come in systems.” - Carl Hewitt
  8. 8. What does a system of actors look like? from: http://www.developerfusion.com/article/140677/writing-concurrent-applications-using-fagents/
  9. 9. What does a system of actors look like? Genes maestros de regulación, from: http://cienciasdejoseleg.blogspot.com/2011/10/genesmaestros-de-regulacion.html
  10. 10. What does a system of actors look like? Tokyo Subway Map, from: http://www.speedymole.com/Tubes/Tokyo/tokyo-subway-map.html
  11. 11. dynamic creation of actors What is the actor model? inclusion of actor addresses in messages interaction only through direct asynchronous message passing no restriction on message arrival order
  12. 12. What are F# agents? F#’s implementation of Erlang-style message passing (also in Clojure, Scala, Elixir (and many others)) [But there are differences.]
  13. 13. Asynchronous Non-blocking, specifically in reference to I/O operations (not necessarily parallel, can be sequential.) Concurrent Multiple operations happening at the same time (not necessarily in parallel). Definitions Parallel Multiple operations processed simultaneously.
  14. 14. Demos: Intro, Replies, Scanning, Emailer
  15. 15. What are some major differences between F# agents & Erlang’s message passing? F# agents are contained inprocess; they are not distributed. Lack of support for supervisors. No built-in durable mailboxes.
  16. 16. Demo: FSharp.Actor framework
  17. 17. Actors and Agents F# in general, and Async, Concurrency, & Parallelism  Fsharp.Actor  TPL Dataflow  ActorFx Additional Resources  Try F#  F# Koans  Orleans  Hewitt, Meijer, and Szyperski C9  Async and Parallel Design Patterns in F# Agents  An Introduction to Agents  Image pipeline using agents  Building an actor in F# w/ higher throughput than Akka or Erlang  F# MailboxProcessor  Building clean and cohesive concurrent systems with F# agents  SkillsMatter  FsSnip  F# Chat on IRC or JabbR  The Hitchhiker’s Guide to Concurrency  F# Asynchronous Programming Model
  18. 18. Thanks! Rachel Reese Twitter: @rachelreese Email: rachel.reese@fireflylogic.com Firefly Logic, Inc. 1000 Main Street #201 Nashville, TN 37206 http://fireflylogic.com

×