Silicon
A realtime platform for creating interactive media.
Async.hpp
Go to the documentation of this file.
1// BSD 2-Clause License
2//
3// Copyright (c) 2023, Matthew McCall
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are met:
8//
9// 1. Redistributions of source code must retain the above copyright notice, this
10// list of conditions and the following disclaimer.
11//
12// 2. Redistributions in binary form must reproduce the above copyright notice,
13// this list of conditions and the following disclaimer in the documentation
14// and/or other materials provided with the distribution.
15//
16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27//
28// Created by Matthew McCall on 1/5/23.
29//
30
31#ifndef SILICON_ASYNC_HPP
32#define SILICON_ASYNC_HPP
33
34#include "taskflow/taskflow.hpp"
35
36namespace Si {
37
38template <typename T>
39using Future = tf::Future<T>;
40
41using AsyncExecutor = tf::Executor;
42
44
45template <typename T, typename F>
47{
48 return GetAsyncExecutor().async(std::forward<F>(f));
49}
50
51template <typename F>
52void Async(F &&f)
53{
54 GetAsyncExecutor().silent_async(std::forward<F>(f));
55}
56
57}
58
59#endif // SILICON_ASYNC_HPP
Definition: Allocator.hpp:36
tf::Executor AsyncExecutor
Definition: Async.hpp:41
Future< T > Async(F &&f)
Definition: Async.hpp:46
tf::Future< T > Future
Definition: Async.hpp:39
AsyncExecutor & GetAsyncExecutor()
Definition: Async.cpp:41