Coder Social home page Coder Social logo

rethread's Introduction

#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.

rethread's People

Contributors

bsazonov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.