pub struct ThreadAwareAccountLocks { /* private fields */ }Expand description
Thread-aware account locks which allows for scheduling on threads that already hold locks on the account. This is useful for allowing queued transactions to be scheduled on a thread while the transaction is still being executed on the thread.
Implementations§
Source§impl ThreadAwareAccountLocks
impl ThreadAwareAccountLocks
Sourcepub fn new(num_threads: usize) -> Self
pub fn new(num_threads: usize) -> Self
Creates a new ThreadAwareAccountLocks with the given number of threads.
Sourcepub fn try_lock_accounts<'a>(
&mut self,
write_account_locks: impl Iterator<Item = &'a Pubkey> + Clone,
read_account_locks: impl Iterator<Item = &'a Pubkey> + Clone,
allowed_threads: ThreadSet,
thread_selector: impl FnOnce(ThreadSet) -> ThreadId,
) -> Result<ThreadId, TryLockError>
pub fn try_lock_accounts<'a>( &mut self, write_account_locks: impl Iterator<Item = &'a Pubkey> + Clone, read_account_locks: impl Iterator<Item = &'a Pubkey> + Clone, allowed_threads: ThreadSet, thread_selector: impl FnOnce(ThreadSet) -> ThreadId, ) -> Result<ThreadId, TryLockError>
Returns the ThreadId if the accounts are able to be locked
for the given thread, otherwise None is returned.
allowed_threads is a set of threads that the caller restricts locking to.
If accounts are schedulable, then they are locked for the thread
selected by the thread_selector function.
thread_selector is only called if all accounts are schdulable, meaning
that the thread_set passed to thread_selector is non-empty.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ThreadAwareAccountLocks
impl RefUnwindSafe for ThreadAwareAccountLocks
impl Send for ThreadAwareAccountLocks
impl Sync for ThreadAwareAccountLocks
impl Unpin for ThreadAwareAccountLocks
impl UnsafeUnpin for ThreadAwareAccountLocks
impl UnwindSafe for ThreadAwareAccountLocks
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more