Mercury Currency Engine
|
#include <limits.h>
#include <memory>
#include <condition_variable>
#include <deque>
#include <thread>
#include <exception>
#include <utility>
#include <type_traits>
#include "function_utility.hpp"
#include "atomic.hpp"
#include "coroutine.hpp"
Go to the source code of this file.
Classes | |
struct | mce::lifecycle |
an interface for implementing lifecycle control operations More... | |
struct | mce::lifecycle::implementation |
virtual interface for implementors of lifecycle More... | |
struct | mce::scheduler |
object responsible for scheduling and executing coroutines More... | |
struct | mce::scheduler::park |
fundamental structure for allowing blocking of coroutines running on a scheduler More... | |
struct | mce::scheduler::park::continuation |
struct | mce::scheduler::parkable |
object containing information to block and unblock a coroutine (running in a scheduler) or thread More... | |
class | mce::scheduler::parkable::unpark_exception |
struct | mce::scheduler::parkable_notify |
struct | mce::scheduler::measurement |
a struct allowing comparison of scheduler workload More... | |
Typedefs | |
template<typename T > | |
using | mce::detail::queue = std::deque< T > |
Functions | |
scheduler *& | mce::detail::tl_this_scheduler () |
scheduler *& | mce::detail::tl_this_scheduler_redirect () |
bool | mce::in_scheduler () |
returns true if calling scope is executing inside a running scheduler More... | |
scheduler & | mce::this_scheduler () |
returns a shared pointer to the scheduler the calling scope is running in More... | |
This header is the heart of this library's code. Much of the code here is unusual and indirect, but necessary, to facilitate the functionality provided by the greater codebase.
|
inline |
returns true if calling scope is executing inside a running scheduler
return true
if calling code is running in a scheduler, else false
|
inline |
returns a shared pointer to the scheduler the calling scope is running in
acquire a reference to the scheduler running on the current thread
This operation is guaranteed to not fail, but it will return an empty pointer if called from a thread that is not running a scheduler.