From 0e1be6ce30ae42f3efe0128069a18e11022dca5b Mon Sep 17 00:00:00 2001 From: JPVenson Date: Mon, 16 Jun 2025 00:21:11 +0300 Subject: Use proper scheduler that honors the parallel task limit (#14281) --- .../ILimitedConcurrencyLibraryScheduler.cs | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 MediaBrowser.Controller/LibraryTaskScheduler/ILimitedConcurrencyLibraryScheduler.cs (limited to 'MediaBrowser.Controller/LibraryTaskScheduler/ILimitedConcurrencyLibraryScheduler.cs') diff --git a/MediaBrowser.Controller/LibraryTaskScheduler/ILimitedConcurrencyLibraryScheduler.cs b/MediaBrowser.Controller/LibraryTaskScheduler/ILimitedConcurrencyLibraryScheduler.cs new file mode 100644 index 000000000..e7460a2e6 --- /dev/null +++ b/MediaBrowser.Controller/LibraryTaskScheduler/ILimitedConcurrencyLibraryScheduler.cs @@ -0,0 +1,23 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Model.Configuration; + +namespace MediaBrowser.Controller.LibraryTaskScheduler; + +/// +/// Provides a shared scheduler to run library related tasks based on the . +/// +public interface ILimitedConcurrencyLibraryScheduler +{ + /// + /// Enqueues an action that will be invoked with the set data. + /// + /// The data Type. + /// The data. + /// The callback to process the data. + /// A progress reporter. + /// Stop token. + /// A task that finishes when all data has been processed by the worker. + Task Enqueue(T[] data, Func, Task> worker, IProgress progress, CancellationToken cancellationToken); +} -- cgit v1.2.3