diff options
| author | Dan Engelbrecht <[email protected]> | 2026-01-26 11:47:41 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-01-26 11:47:41 +0100 |
| commit | 47b6d0219015b2b3d0fb4eda58bd0744d00130e9 (patch) | |
| tree | 16fedb1b24bd6ad2a7deeb338285f826f5422a41 /src/zencore/include | |
| parent | builds scanning cache (#727) (diff) | |
| download | zen-47b6d0219015b2b3d0fb4eda58bd0744d00130e9.tar.xz zen-47b6d0219015b2b3d0fb4eda58bd0744d00130e9.zip | |
avoid big ioworker backlog (#733)
* add ability to override scheduling mode in ParallelWork
* Don't increase buffering size when copying from local cache with --boost-worker-memory enabled
* Rework scheduling writes of downloaded data to reduce memory usage
Diffstat (limited to 'src/zencore/include')
| -rw-r--r-- | src/zencore/include/zencore/parallelwork.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/zencore/include/zencore/parallelwork.h b/src/zencore/include/zencore/parallelwork.h index 138d0bc7c..536b0a056 100644 --- a/src/zencore/include/zencore/parallelwork.h +++ b/src/zencore/include/zencore/parallelwork.h @@ -21,7 +21,19 @@ public: typedef std::function<void(std::exception_ptr Ex, std::atomic<bool>& AbortFlag)> ExceptionCallback; typedef std::function<void(bool IsAborted, bool IsPaused, std::ptrdiff_t PendingWork)> UpdateCallback; - void ScheduleWork(WorkerThreadPool& WorkerPool, WorkCallback&& Work, ExceptionCallback&& OnError = {}) + inline void ScheduleWork(WorkerThreadPool& WorkerPool, WorkCallback&& Work) { ScheduleWork(WorkerPool, std::move(Work), {}, m_Mode); } + + inline void ScheduleWork(WorkerThreadPool& WorkerPool, WorkCallback&& Work, ExceptionCallback&& OnError) + { + ScheduleWork(WorkerPool, std::move(Work), std::move(OnError), m_Mode); + } + + inline void ScheduleWork(WorkerThreadPool& WorkerPool, WorkCallback&& Work, WorkerThreadPool::EMode Mode) + { + ScheduleWork(WorkerPool, std::move(Work), {}, Mode); + } + + void ScheduleWork(WorkerThreadPool& WorkerPool, WorkCallback&& Work, ExceptionCallback&& OnError, WorkerThreadPool::EMode Mode) { m_PendingWork.AddCount(1); try @@ -42,7 +54,7 @@ public: OnError(std::current_exception(), m_AbortFlag); } }, - m_Mode); + Mode); } catch (const std::exception& Ex) { |