We have explored the advanced concurrency support in F# and .NET TPL. We also have enough knowledge about how we should handle side effects and also on using asynchronous for various cases and scenarios.
The main conclusion when implementing the best practices of leveraging concurrency in F# is that there is no silver bullet for all concurrency needs, and this includes avoiding the assumption that parallelized code always runs faster than non-parallel code after examining cases that may bring down the performance of parallel implementation in .NET TPL. These warning cases can be applied not just in F# but also in VB/C#.
We have understood asynchrony and parallelism. We will use this knowledge to optimize the type providers and avoid the pitfalls of implementing them in Chapter 6, Optimizing Type Provider .