Module resizable_parallel_runner

Module resizable_parallel_runner 

Source
Expand description

This file is part of jpegxl-sys.

jpegxl-sys is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

jpegxl-sys is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with jpegxl-sys. If not, see https://www.gnu.org/licenses/. Implementation using std::thread of a resizeable JxlParallelRunner. Implementation of JxlParallelRunner than can be used to enable multithreading when using the JPEG XL library. This uses std::thread internally and related synchronization functions. The number of threads created can be changed after creation of the thread pool; the threads (including the main thread) are re-used for every ResizableParallelRunner::Runner call. Only one concurrent JxlResizableParallelRunner call per instance is allowed at a time.

This is a scalable, lower-overhead thread pool runner, especially suitable for data-parallel computations in the fork-join model, where clients need to know when all tasks have completed.

Compared to the implementation in super::thread_parallel_runner, this implementation is tuned for execution on lower-powered systems, including for example ARM CPUs with big.LITTLE computation models.

Functions§

JxlResizableParallelRunner
Parallel runner internally using std::thread. Use as JxlParallelRunner.
JxlResizableParallelRunnerCreate
Creates the runner for JxlResizableParallelRunner. Use as the opaque runner. The runner will execute tasks on the calling thread until JxlResizableParallelRunnerSetThreads is called.
JxlResizableParallelRunnerDestroy
Destroys the runner created by JxlResizableParallelRunnerCreate.
JxlResizableParallelRunnerSetThreads
Changes the number of threads for JxlResizableParallelRunner.
JxlResizableParallelRunnerSuggestThreads
Suggests a number of threads to use for an image of given size.