Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
WorkerPool.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/container/MovePriorityQueue.h"
7#include "mc/deps/core/threading/BackgroundTaskBase.h"
8#include "mc/deps/core/threading/BackgroundTaskQueue.h"
9#include "mc/deps/core/threading/BackgroundWorkerPerfInfo.h"
10#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
11#include "mc/platform/brstd/flat_set.h"
12#include "mc/platform/threading/OSThreadPriority.h"
13#include "mc/platform/threading/SpinLockImpl.h"
14
15// auto generated forward declare list
16// clang-format off
19class Scheduler;
20// clang-format on
21
23public:
24 // WorkerPool inner types define
25 using PendingJobQueue =
27
28public:
29 // member variables
30 // NOLINTBEGIN
31 ::ll::TypedStorage<1, 1, bool const> mAsync;
32 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::BackgroundWorker>>> mWorkers;
33 ::ll::TypedStorage<8, 32, ::std::string> mName;
34 ::ll::TypedStorage<8, 64, ::BackgroundWorkerPerfInfo> mPerfInfo;
35 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mLastPerfInfoUpdate;
36 ::ll::TypedStorage<8, 8, ::Scheduler*> mOwnerScheduler;
37 ::ll::TypedStorage<8, 80, ::std::mutex> mSuspendLock;
38 ::ll::TypedStorage<4, 4, ::Bedrock::Threading::OSThreadPriority> mPoolPriority;
39 ::ll::TypedStorage<4, 4, float> mMinBacklogDurationSeconds;
40 ::ll::TypedStorage<8, 24, ::SpinLockImpl> mPendingWorkQueueLock;
41 ::ll::TypedStorage<
42 8,
43 24,
45 mPendingWorkQueue;
46 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mNextPendingWorkTime;
47 ::ll::TypedStorage<8, 360, ::BackgroundTaskQueue> mTaskQueue;
48 // NOLINTEND
49
50public:
51 // virtual functions
52 // NOLINTBEGIN
53 virtual ~WorkerPool() /*override*/ = default;
54 // NOLINTEND
55
56public:
57 // member functions
58 // NOLINTBEGIN
59#ifdef LL_PLAT_C
60 MCNAPI ::std::vector<::std::thread::id> getThreadIds() const;
61
62 MCNAPI void kick(uint64 count);
63#endif
64
65 MCNAPI void queue(::std::shared_ptr<::BackgroundTaskBase> task, bool queueImmediate);
66 // NOLINTEND
67
68public:
69 // static functions
70 // NOLINTBEGIN
71 MCNAPI static void _registerPool(::WorkerPool& pool);
72 // NOLINTEND
73
74public:
75 // static variables
76 // NOLINTBEGIN
77 MCNAPI static ::brstd::flat_set<::WorkerPool*, ::std::less<::WorkerPool*>, ::std::vector<::WorkerPool*>>&
79
80 MCNAPI static ::std::mutex& sAllPoolsMutex();
81 // NOLINTEND
82};
Definition BackgroundTaskBase.h:69
Definition BackgroundTaskBase.h:18
Definition BackgroundWorker.h:22
Definition EnableNonOwnerReferences.h:7
Definition MovePriorityQueue.h:6
Definition Scheduler.h:15
Definition WorkerPool.h:22
MCAPI void queue(::std::shared_ptr<::BackgroundTaskBase > task, bool queueImmediate)
static MCAPI ::std::mutex & sAllPoolsMutex()
static MCAPI ::brstd::flat_set<::WorkerPool *, ::std::less<::WorkerPool * >, ::std::vector<::WorkerPool * > > & sAllPools()
static MCAPI void _registerPool(::WorkerPool &pool)