Here are the contents of the root folder:
.
├── README.md
├── bench-data
│ ├── concurrent_version
│ └── transactional_version
├── bench.py
├── concurrent
│ ├── BTree.cpp
│ ├── BTree.h
│ ├── DLSM.h
│ ├── LockFreeSkiplist.h
│ ├── SkipList.h
│ └── main.cpp
├── documents
├── makefile [recommended]
├── transactional
│ ├── DLSM.h
│ ├── SharedSkipList.h
│ ├── SkipList.h
│ ├── a.out
│ ├── main.cpp
│ └── main.o
├── windows_compile_concurrent.bat [not guaranteed, this project is recommended to be run on Linux/ MacOS]
└── windows_compile_stm.bat [not guaranteed, this project is recommended to be run on Linux/ MacOS]
README.md -> This file
bench-data -> Folder containing benchmark graphs, for both concurrent and transactional versions
bench.py -> Benchmark tool. Usage is detailed in the .py file as comments
concurrent -> Contains the source code for the concurrent version of this algorithm
documents -> Related documents
makefile -> Makefile
transactional -> Contains the source code for the software transactional memory (STM) version of this algorithm
windows_compile_concurrent.bat -> Compiling script for the conccurent version for windows machines (where make is not available)
windows_compile_stm.bat -> Compiling script for the STM version for windows machines (where make is not available)
To compile, run make as shown here:
$ make concurrent # build the concurrent version --or--
$ make transactional_version # build the transactional (STM) versionThe executable will be name klsm, which will be in the root folder.
klsm takes two command-line arguments-- first one being the number of threads, and the second one being the number of operations
$ ./klsm 4 100000