Template Class DataShuttle¶
Defined in File data_shuttle.h
Encapsulates the full life cycle of DataLoader jobs.
When a new job is enqueued to the
DataShuttle, a counter for in-flight jobs is bumped. This job is said to be “in-flight” until its result is popped. Worker threads dequeue jobs as soon as they are available. When a worker finishes a job, it enqueues the result. Only when the main thread dequeues a result is the count of in-flight jobs decremented. When the main thread attempts to dequeue a job but no jobs are in-flight, that means the epoch is complete and
pop_resultreturns an empty optional.
Returns the next job, blocking until there is one available.
Called by worker threads.
pop_result(optional<std::chrono::milliseconds> timeout = nullopt)¶
Returns the result of a job, or nullopt if all jobs were exhausted.
Called by the main thread.
Discards any jobs that are not yet in flight, and waits for all in-flight jobs to finish, discarding their result.
in_flight_jobs() const noexcept¶
Returns the number of jobs that are still in progress.
When this number is zero, an epoch is finished.