Skip to main content

Synchronization

  • Chapter
  • First Online:
Programming Algorithms in Lisp
  • 1181 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 29.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 37.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 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. 2.

    This internal “threading,” usually, also relies on the OS threading API behind the scenes.

  3. 3.

    In this context, they tend to be called “processes,” but we’ll still stick to the term “thread.”

  4. 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. 5.

    If we forbid the destructive rplaca/rplacd operations and their derivatives.

  6. 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. 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. 8.

    His thesis with the same title is freely available, but the book covers more and is more accessible.

  9. 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

Authors

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Vsevolod Domkin

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

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

Publish with us

Policies and ethics