ConcurrentObjectPool<T>
Provides concurrent object pool where
object selection is thread-safe but not selected object.
Represents locked object.
Read-only collection of objects in this pool.
Initializes a new object pool.
Select first unbusy object from pool, lock it and return it.