Type of closure function defining your business logic.
Write locks a mutex with your business logic code.
Monopolies a mutex until be the closure has been completed. If there're someone who have already monopolied or shared the mutex, the function call would be blocked until all of them return their acquisitions by calling ILockable.unlock or ISharedLockable.unlock_shared methods.
When succeeded to monopoly the mutex, the lock function will call the closure, a custom function definig your business. After the closure function be returned, the lock function automatically unlocks the mutex, even if the closure function throws any error.
Therefore, when using this lock function, you don't need to consider about returning the lock acquistion after your business. It would just be done automatically.
Target mutex to write lock.
A function defining your business.
Tries to write lock a mutex with your business.
Attempts to monopoly a mutex without blocking. If succeeded to monopoly the mutex
immediately, it returns true
after calling the closure*. Otherwise there's someone who
has already monopolied or shared the
mutex, the function gives up the trial immediately and returns false
directly without
calling the *closure.
When succeeded to monopoly the mutex, the try_lock function will call the closure, a custom function definig your business. After the closure function be returned, the try_lock function automatically unlocks the mutex, even if the closure function throws any error.
Therefore, when using this try_lock function, you don't need to consider about returning the lock acquistion after your business. It would just be done automatically.
Target mutex to try write lock.
A function defining your business.
Whether succeeded to monopoly the mutex or not.
Tries to write lock a mutex with your business until timeout.
Attempts to monopoly a mutex until timeout. If succeeded to monopoly the mutex until the
timeout, it returns true
after calling the closure*. Otherwise failed to acquiring the
lock in the given time, the function gives up the trial and returns false
without calling
the *closure.
Failed to acquiring the lock in the given time (returns false
), it means that there's
someone who has already monopolied or ISharedLockable.lock
the mutex and does not return it over the timeout.
When succeeded to monopoly the mutex, the try_lock_for
function will call the closure, a custom function definig your business. After the
closure function be returned, the try_lock_for function automatically
unlocks the mutex and returns true
, even if the closure
function throws any error.
Therefore, when using this try_lock_for function, you don't need to consider about returning the lock acquistion after your business. It would just be done automatically.
Target mutex to try write lock until timeout.
The maximum miliseconds for waiting.
A function defining your business.
Whether succeeded to monopoly the mutex or not.
Tries to write lock a mutex with your business until time expiration.
Attempts to monopoly a mutex until time expiration. If succeeded to monopoly the mutex
until the time expiration, it returns true
after calling the closure*. Otherwise failed
to acquiring the lock in the given time, the function gives up the trial and returns
false
without calling the *closure.
Failed to acquiring the lock in the given time (returns false
), it means that there's
someone who has already monopolied or ISharedLockable.lock
the mutex and does not return it over the time expiration.
When succeeded to monopoly the mutex, the try_lock_until
function will call the closure, a custom function definig your business. After the
closure function be returned, the try_lock_until function automatically
unlocks the mutex and returns true
, even if the closure
function throws any error.
TTherefore, when using this try_lock_until function, you don't need to consider about returning the lock acquistion after your business. It would just be done automatically.
Target mutex to try write lock until time expiration.
The maximum time point to wait.
A function defining your business.
Whether succeeded to monopoly the mutex or not.
Generated using TypeDoc
Mutex wrapper for the safe write lock.
The module UniqueLock is a collection of general purpose functions wrapping mutex for ensuring the safe lock. If you lock a mutex (with your business logic code) through any function of the UniqueLock module, the mutex would be automatically unlocked after your business, even if an error has been occured in your business.
Jeongho Nam - https://github.com/samchon