Abstract
This is the final chapter of the book, in which we will discuss optimization of parallel computations: whether concurrently on a single machine in a shared-memory setting or in a distributed shared-nothing environment. This is a huge topic that spans synchronization itself, parallelization, concurrency, distributed computations, and the functional approach. And every senior software developer should be well versed in it.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
We will further use the term “thread” to denote a separate computation running as part of our application, as it is less ambiguous than “process” and also much more widespread than all the other terms.
- 2.
This internal “threading,” usually, also relies on the OS threading API behind the scenes.
- 3.
In this context, they tend to be called “processes,” but we’ll still stick to the term “thread.”
- 4.
The other apparent limitation of supporting only two threads can be lifted by a modification to the algorithm, which requires some hardware support.
- 5.
If we forbid the destructive rplaca/rplacd operations and their derivatives.
- 6.
…and a quite high algorithm base—usually 32—that means very shallow trees resulting in just a handful of hops even for quite large structures.
- 7.
Except for the length of the leftmost range that depends on the number of bits in a hash. For instance, for a 32-bit hash, it may be 7, and the depth of the whole HAMT would be 5.
- 8.
His thesis with the same title is freely available, but the book covers more and is more accessible.
- 9.
The reason for that might be relative immaturity of this space, as well as its complexity, so that our knowledge of it hasn’t been developed enough to reach the stage when optimization becomes the main focus.
Author information
Authors and Affiliations
Rights and permissions
Copyright information
© 2021 Vsevolod Domkin
About this chapter
Cite this chapter
Domkin, V. (2021). Synchronization. In: Programming Algorithms in Lisp. Apress, Berkeley, CA. https://doi.org/10.1007/978-1-4842-6428-7_15
Download citation
DOI: https://doi.org/10.1007/978-1-4842-6428-7_15
Published:
Publisher Name: Apress, Berkeley, CA
Print ISBN: 978-1-4842-6427-0
Online ISBN: 978-1-4842-6428-7
eBook Packages: Professional and Applied ComputingApress Access BooksProfessional and Applied Computing (R0)