This project is the public part of the results of my research work dedicated to the development and evaluation of synchronization primitives for lightweight threads.
The project is organized as follows:
locks/: Contains header-only implementations of all our mutexes, along with useful utilities for their usage and integration into your projects.benchmarks/: Includes three benchmark modules for each of the integrated lightweight threading libraries.scripts/: Holds various scripts used for running test scenarios. These are not particularly elegant, but functional.conda/: Provides two setup scripts and an environment configuration file, allowing most dependencies to be installed using miniconda.
On first use, you need to install miniconda by running the script: scripts/activate-conda.sh.
Then, create the required conda environments using: scripts/create-conda-envs.sh.
After setting up the environment, you can run one of the short helper scripts to execute benchmarks for a specific lightweight threading library:
- Argobots:
abt_run.sh - Boost Fibers:
fibers_run.sh - Userver
userver_run.sh
If you're lucky, running just one script after environment setup will be enough. Otherwise, you may need to spend some time resolving dependency-related issues.
To understand which mutexes and test scenarios are being executed, refer to the configuration file for the specific library. It is typically located at: benchmarks/<lib_name>/resource/config/config.json