data into the list of tasks to be executed by this.
When the number of currently running threads is lower than the maximal allowed number of threads, a new thread is started (or reused) with the
properties given to ThreadPool.with_owned_data.
data stays in the queue until a thread in this pool finishes its previous task and processes
throws can be null to ignore errors, or non-null
to report errors. An error can only occur when a new thread couldn't be created. In that case
data is simply appended to
the queue of work to do.
Before version 2.32, this function did not return a success status.
a new task for this
true on success, false if an error occurred