Tervel is a wait-free framework and library of concurrent algorithms and containers. Its primary goal is to ensure that each component of Tervel is wait-free. This means that each function will return after a finite number of steps, regardless of the system scheduler or actions of other threads.
Tervel was designed to bring together the many techniques and methodologies found in literature into a single usable framework. Its design was heavily influenced by the challenges and requirements faced when implementing wait-free algorithms.
Its most notable features are:
Memory Reclamation
Progress Assurance
Inter-Thread Helping Techniques
Descriptor design methodologies
Association model
Integration with memory reclamation
Composable design patters
See the concepts page for details.
Tervel was created to solve the problems we faced when designing and implementing wait-free algorithms. We found that for each implementation we were re-writing or even worse copying code that was used in previous algorithms. By constructing a framework, we found that the implementation time significantly decreased. Additionally the number of difficult bugs, amount of coding, and testing was also significantly reduced.
By migrating our old algorithms to Tervel, it made it easier for designers to incorporate various data structures into their application. Previously they had to integrate multiple disjoint code bases.
If you have requirements of wait-freedom, then Tervel is a must! Thats really the only reason… unless you get some joy playing around with progress guarantees and concurrency, and if that is the case you should contribute.
If a thread stopped executing at an arbitrary point in its execution (and never resumed), whats the worst that would happen?
Yes! check out the test directory!
Anything that runs C++11 can run Tervel.
Its been tested, but not exhaustively, this is an alpha release after all.
Please see our contribution guidelines.
You can send us messages through github or at tervel@cse.eecs.ucf.edu.
Send e-mail to tervel@cse.eecs.ucf.edu.