/*** Copyright (C) 2023 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: IThreadPoolInternal.hpp Date: 2023-11-04 Author: Reece ***/ #pragma once namespace Aurora::Async { struct ThreadState; struct IAsyncRunnable; struct IThreadPoolInternal { virtual bool WaitFor(WorkerPId_t unlocker, const AuSPtr &primitive, AuUInt32 ms) = 0; virtual void Run(WorkerId_t target, AuSPtr runnable) = 0; virtual AuSPtr GetThreadHandle(WorkerId_t id) = 0; virtual IThreadPool *ToThreadPool() = 0; AuUInt32 uAtomicCounter {}; AuUInt32 uAtomicIOProcessors {}; AuUInt32 uAtomicIOProcessorsWorthlessSources {}; // TODO: forgot about this. nevertheless, the default thread local io context doesnt use this, nor should it really because we cant really account for external is relevant conditions. AuUInt32 uAtomicShutdownCookie {}; }; }