Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Introduction

The purpose of this library is to provide small, simple to use abstractions to write a program in an asynchronous way with minimal dependency on concrete coroutine, thread pool or event loop implementation. The library is heavy templated and requires c++17 features support.

The library is designed with the following goals in mind:

  • Reduce dependencies on 3rd party libraries
  • Do not pollute parent project with CMake
  • Only modern techniques in c++ and Cmake code are used
  • Introduce an easy way to adapt every callable object into continuation
  • Prevent thread synchronization where it is not needed
  • Help with error handling but do not force specific error types, let the user use utils from its own codebase
  • Provide meaningful support for cancellation
  • Support different executors (thread pools, event loops, etc.) via an ad-hoc interface, let the user write own library support
  • Write reference implementations for ASIO, std::thread, but let the user replace it with different code

This piece of code should utilize modern CI usages, such as multi-os, multi-toolchain checks, code coverage reports, static analysis and sanitizer cheks.