pub struct ThreadAwareAccountLocks { /* private fields */ }agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.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
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn new(num_threads: usize) -> Self
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.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>
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
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>
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.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.
Sourcepub fn unlock_accounts<'a>(
&mut self,
write_account_locks: impl Iterator<Item = &'a Pubkey>,
read_account_locks: impl Iterator<Item = &'a Pubkey>,
thread_id: ThreadId,
)
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn unlock_accounts<'a>( &mut self, write_account_locks: impl Iterator<Item = &'a Pubkey>, read_account_locks: impl Iterator<Item = &'a Pubkey>, thread_id: ThreadId, )
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Unlocks the accounts for the given thread.
Auto Trait Implementations§
impl Freeze for ThreadAwareAccountLocks
impl RefUnwindSafe for ThreadAwareAccountLocks
impl Send for ThreadAwareAccountLocks
impl Sync for ThreadAwareAccountLocks
impl Unpin 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
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>
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>
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