# Functions
NewLockedReader creates a LockedReader by wrapping an underlying value.
NewPool creates a new pool, with a certain number of workers.
# Structs
LockedReader wraps an io.Reader to be safe for concurrent reads.
Pool represents a pool of workers, used for parallelizing functions.