50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
/***
|
|
Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
|
|
|
File: Async.hpp
|
|
Date: 2021-7-14
|
|
Author: Reece
|
|
***/
|
|
#pragma once
|
|
|
|
#include "AsyncTypes.hpp"
|
|
|
|
#include "IWorkItem.hpp"
|
|
#include "IWorkItemHandler.hpp"
|
|
#include "IThreadPool.hpp"
|
|
#include "IAsyncApp.hpp"
|
|
|
|
#include "Jobs.hpp"
|
|
#include "Tasks.hpp"
|
|
|
|
namespace Aurora::Async
|
|
{
|
|
AUKN_SYM IAsyncApp *GetAsyncApp();
|
|
AUKN_SYM AuSPtr<IAsyncApp> GetSharedAsyncApp();
|
|
|
|
///
|
|
AUKN_SYM WorkerPId_t GetCurrentWorkerPId();
|
|
|
|
/// Async app only | Thread pools must use the IThreadPool::NewFence function
|
|
AUKN_SYM AuSPtr<IWorkItem> NewWorkItem(const WorkerId_t &worker, const AuSPtr<IWorkItemHandler> &task, bool supportsBlocking = false);
|
|
|
|
AUKN_SYM AuSPtr<IWorkItem> NewWorkItem(const WorkerPId_t &worker, const AuSPtr<IWorkItemHandler> &task, bool supportsBlocking = false);
|
|
|
|
/// Async app only | Thread pools must use the IThreadPool::NewFence function
|
|
AUKN_SYM AuSPtr<IWorkItem> NewFence();
|
|
|
|
/// Allocates a new thread pool for usage
|
|
AUKN_SYM AuSPtr<IThreadPool> NewThreadPool();
|
|
|
|
///
|
|
AUKN_SYM void SetMainThreadForSysPumpScheduling(WorkerPId_t pid);
|
|
}
|
|
|
|
#if !defined(_CPPSHARP)
|
|
#include "JobFrom.hpp"
|
|
#include "TaskFrom.hpp"
|
|
#include "WorkPairImpl.hpp"
|
|
#include "WorkBasic.hpp"
|
|
#include "OldTrash.hpp"
|
|
#endif
|