When we access shared resources in a concurrent environment, we should choose a proper synchronization mechanism to avoid incorrect results and data inconsistencies. ZIO provides a set of synchronization primitives and concurrent data structures in the
zio-concurrent module that helps us to achieve the desired synchronization.
In order to use this library, we need to add the following line in our
libraryDependencies += "dev.zio" %% "zio-concurrent" % "2.x.x"
ZIO has several synchronization tools:
ReentrantLockis a synchronization tool that is useful for synchronizing blocks of code.
CountDownLatchis a synchronization tool that allows one or more fibers to wait for the finalization of multiple operations.
CyclicBarrieris a synchronization tool that allows a set of fibers to all wait for each other to reach a common barrier point.
Concurrent Data Structures
It also has some concurrent data structure: