Asynchronous and parallel programming will be introduced in this section, together with events, thread pools, background workers, and the MailboxProcessor (agents). All these constructs exist with one purpose in life: to make life easier for the programmer. Modern computers have CPUs capable of executing several threads in parallel, which opens doors to new possibilities. These possibilities require a good toolkit for concurrent and parallel programming. F# is a very good candidate, and one of its design principles is to be a good fit in these types of situations.
Events are useful when you want a certain function to execute upon a specific event that will occur sometime in the future. This is often applicable to GUI programming, where a user will interact in some way with the interface. The pattern is called event-driven programming, where events drive the execution of the program. The following example illustrates this in a simple manner:
open...