|
Uni20
Asynchronous tensor and runtime library.
|
Fixed-capacity pool of preconstructed provider resources. More...
#include <resource_pool.hpp>
Public Types | |
| using | lease_type = ResourceLease< Resource > |
| using | resource_type = Resource |
| using | waiter_type = detail::ResourceWaiter< Resource > |
Public Member Functions | |
| lease_type | acquire () |
| Block until one resource can be leased. | |
| std::optional< lease_type > | acquire_or_enqueue (waiter_type &waiter) noexcept |
| Register an internal awaiter unless a resource is immediately available. | |
| std::size_t | idle_count () const noexcept |
| Return the number of resources currently available for acquisition. | |
| ResourcePool & | operator= (ResourcePool &&)=delete |
| ResourcePool & | operator= (ResourcePool const &)=delete |
| ResourcePool (ResourcePool &&)=delete | |
| ResourcePool (ResourcePool const &)=delete | |
| ResourcePool (std::vector< Resource > resources) | |
| Take ownership of the resources that form this pool's slots. | |
| std::size_t | size () const noexcept |
| Return the fixed number of resource slots. | |
| std::optional< lease_type > | try_acquire () |
| Try to acquire one idle resource without waiting. | |
| ~ResourcePool () | |
Friends | |
| class | ResourceLease< Resource > |
Fixed-capacity pool of preconstructed provider resources.
Non-blocking waiters receive released resources in FIFO order. The pool is independent of scheduler and CUDA stream policy and must outlive all leases and queued acquisition awaiters.
| using uni20::cuda::ResourcePool< Resource >::lease_type = ResourceLease<Resource> |
| using uni20::cuda::ResourcePool< Resource >::resource_type = Resource |
| using uni20::cuda::ResourcePool< Resource >::waiter_type = detail::ResourceWaiter<Resource> |
|
inlineexplicit |
Take ownership of the resources that form this pool's slots.
|
delete |
|
delete |
|
inline |
|
inline |
Block until one resource can be leased.
|
inlinenoexcept |
Register an internal awaiter unless a resource is immediately available.
|
inlinenoexcept |
Return the number of resources currently available for acquisition.
|
delete |
|
delete |
|
inlinenoexcept |
Return the fixed number of resource slots.
|
inline |
Try to acquire one idle resource without waiting.
|
friend |