/rethread

Header-only C++ library that implements cancellation tokens and RAII-compliant threads.

Primary LanguageC++ISC LicenseISC

#rethread

Rethread is a header-only C++ library that implements cancellation tokens and RAII-compliant threads.

Getting started information is available in the rethread tutorial.
For performance considerations, take a look at benchmarks.
Also, there's an advanced guide about custom cancellation handlers.
Design rationale is available here.

Tests and benchmarks are kept in a separate repository: rethread_testing.

##Features

  • RAII-compliant threads
  • Cancellable waits on any condition_variable
  • Does not require exceptions
  • Fine granularity - can cancel separate tasks without terminating the whole thread
  • Can interrupt any POSIX call that cooperates with poll
  • Custom cancellation handlers support
  • Super low price for cancellability - sometimes cancellable functions actually work faster!

##Platforms Cancellation tokens, threads and cancellable waits for condition variables are implemented in terms of standard C++11. Obviously, cancelling blocking calls to the OS can't be platform-agnostic.

rethread is continuously tested with the following compilers: #####Travis Build Status

  • gcc-4.8
  • clang-3.5

#####AppVeyor Build status

  • Visual Studio 2013
  • Visual Studio 2015

There should be no major issues with porting rethread to C++98, but I see no reason in doing it right now.