  The recent advancements in multicore machines highlight the need to simplify
concurrent programming in order to leverage their computational power. One way
to achieve this is by designing efficient concurrent data structures (e.g.
stacks, queues, hash-tables, etc.) and synchronization techniques (e.g. locks,
combining techniques, etc.) that perform well in machines with large amounts of
cores. In contrast to ordinary, sequential data-structures, the concurrent
data-structures allow multiple threads to simultaneously access and/or modify
them.
  Synch is an open-source framework that not only provides some common
high-performant concurrent data-structures, but it also provides researchers
with the tools for designing and benchmarking high performant concurrent
data-structures. The Synch framework contains a substantial set of concurrent
data-structures such as queues, stacks, combining-objects, hash-tables, locks,
etc. and it provides a user-friendly runtime for developing and benchmarking
concurrent data-structures. Among other features, the provided runtime provides
functionality for creating threads easily (both POSIX and user-level threads),
tools for measuring performance, etc. Moreover, the provided concurrent
data-structures and the runtime are highly optimized for contemporary NUMA
multiprocessors such as AMD Epyc and Intel Xeon.
