My implementation of a Software Transactional Memory based on TL2, with the addition of revalidation during reads in read-only transactions, to try and reduce the number of aborts in read-only transactions. My code is here.
The project description is available on Moodle and the website of the course.
The description includes:
- an introduction to (software) transactional memory
- an introduction to concurrent programming in C11/C++11, with pointers to more resources
- the specifications of the transactional memory you have to implement, i.e. both:
- sufficient properties for a transactional memory to be deemed correct
- a thorough description of the transactional memory interface
- practical informations, including:
- how to test your implementation on your local machine and on the evaluation server
- how your submission will be graded
- rules for (optionally) using 3rd-party libraries and collaboration (although the project is individual)
This repository provides:
- examples of how to use synchronization primitives (in
sync-examples/
) - a reference implementation (in
reference/
) - a "skeleton" implementation (in
template/
)- this template is written in C11
- feel free to overwrite it completely if you prefer to use C++ (in this case include
<tm.hpp>
instead of<tm.h>
)
- the program that will test your implementation (in
grading/
)- the same program will be used on the evaluation server (although possibly with a different seed)
- you can use it to test/debug your implementation on your local machine (see the description)
- a tool to submit your implementation (in
submit.py
)- you should have received by mail a secret unique user identifier (UUID)
- see the description for more information