- Book Chapter
1
- 10.1007/978-1-4302-0285-1_13
Reactive, Asynchronous, and Concurrent Programming
- Jan 01, 2007
- Don Syme + 2 more +2
So far in this book you’ve seen functions and objects that process their inputs immediately using a single “thread” of execution where the code runs to completion and produces useful results or state changes. In this chapter, you’ll turn your attention to concurrent, parallel, asynchronous, and reactive programs. These each represent substantially different approaches to programming from those you’ve seen so far. Some of the reasons for turning to these techniques are as follows: To achieve better responsiveness in a graphical user interface (GUI) To report progress results during a long-running computation and to support cancellation of these computations To achieve greater throughput in a reactive application or service To achieve faster processing rates on a multiprocessor machine or cluster To take advantage of the I/O parallelism available in modern disk drives or network connections To sustain processing while network and disk I/O operations are in process In this chapter, we cover some of the techniques that can help achieve these outcomes: Using .NET threads and the BackgroundWorker class for background computations Using events and messages to report results back to a GUI Using F# asynchronous workflows and the .NET thread pool to handle network requests and other asynchronous I/O operations Using F# pattern matching to process message queues Using low-level .NET shared-memory primitives to implement new concurrency techniques and control access to mutable data structures KeywordsGraphical User InterfaceConcurrent ProgrammingMain ThreadWork ThreadThread PoolThese keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Read more