pub struct ConcurrentRunner<Config> { /* private fields */ }Expand description
A runner to process files concurrently.
Implementations§
Source§impl<Config: 'static + Send + Sync> ConcurrentRunner<Config>
impl<Config: 'static + Send + Sync> ConcurrentRunner<Config>
Sourcepub fn new<ProcFiles>(num_jobs: usize, proc_files: ProcFiles) -> Self
pub fn new<ProcFiles>(num_jobs: usize, proc_files: ProcFiles) -> Self
Creates a new ConcurrentRunner.
num_jobs- Total worker budget (one producer thread plus the consumer threads).runalways spawns a single producer thread, so the number of consumer threads it spawns ismax(2, num_jobs) - 1. This means0,1, and2all collapse to a single consumer (no panic, no linear scaling below 2); values of3or more yieldnum_jobs - 1consumers.proc_files- Function that processes each file in the list.
Sourcepub fn run(
self,
config: Config,
files_data: FilesData,
) -> Result<(), ConcurrentErrors>
pub fn run( self, config: Config, files_data: FilesData, ) -> Result<(), ConcurrentErrors>
Runs the producer-consumer pool over the terminal file list in
files_data. Each path is dispatched to a worker as a single
regular file; this runner performs no directory traversal or
glob filtering (the caller resolves and filters the file set —
see FilesData).
config- Information used to process a file.files_data- The resolved, terminal file list to process.
§Errors
Returns ConcurrentErrors::Thread when any worker thread
(the single producer OR one of the num_jobs consumers)
cannot be spawned via std::thread::Builder::spawn;
ConcurrentErrors::Producer when the producer thread
panics and join fails;
ConcurrentErrors::Sender when a worker cannot place an
item (or the post-dispatch None poison-pill) on the channel;
ConcurrentErrors::Receiver when a consumer thread panics
and its join fails. Per-file processing errors raised by the
user-supplied callback are surfaced through the callback
itself, not through this Result.