TankerHQ / tconcurrent

Tanker coroutine library

Home Page:https://tanker.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tanker logo

License

Tanker coroutine library

Table of Contents

Overview

tconcurrent is a coroutine library that allows writing asynchronous code that is both C++14 and coroutines-TS-compatible.

The coroutines are stackful when compiled in C++14 mode and stackless when using the coroutines-TS mode.

Example

tconcurrent exposes an async_resumable function that will run a coroutine asynchronously. A coroutine function must return a tc::cotask and can then use the TC_AWAIT and TC_RETURN macros.

int main()
{
  // Run an asynchronous task, like `std::async`
  tc::future<std::string> f1 = tc::async([]() -> std::string {
    return "42";
  });

  // Run a resumable asynchronous task
  tc::future<int> f2 = tc::async_resumable([]() -> tc::cotask<int> {
    int const val = TC_AWAIT(receive_value());
    TC_AWAIT(send_value(val * 2));
    TC_RETURN(42);
  });

  f1.get();
  f2.get();
}

Setup

We are actively working to allow external developers to build and test this SDK from its source.

Doxygen

To generate and open documentation:

$ cd doc && doxygen && xdg-open build/html/index.html

Documentation

To better understand how tconcurrent works, a big picture explanation is here:

Contributing

We welcome feedback. Feel free to open any issue on the Github bug tracker.

License and Terms

The tconcurrent library is licensed under the Apache License, version 2.0.

About

Tanker coroutine library

https://tanker.io

License:Other


Languages

Language:C++ 94.4%Language:CMake 2.8%Language:Python 2.7%Language:Vim Script 0.1%