Class GammaTxnBoolean
- All Implemented Interfaces:
Lock,TxnBoolean,TxnObject,MultiverseConstants,GammaConstants,GammaObject
TxnBoolean for the GammaStm.-
Field Summary
Fields inherited from class org.multiverse.stms.gamma.transactionalobjects.BaseGammaTxnRef
long_value, ref_value, typeFields inherited from class org.multiverse.stms.gamma.transactionalobjects.AbstractGammaObject
___unsafe, identityHashCode, listeners, listenersOffset, MASK_OREC_EXCLUSIVELOCK, MASK_OREC_READBIASED, MASK_OREC_READLOCKS, MASK_OREC_READONLY_COUNT, MASK_OREC_SURPLUS, MASK_OREC_UPDATELOCK, orec, stm, valueOffset, versionFields inherited from interface org.multiverse.stms.gamma.GammaConstants
FAILURE, MASK_CONFLICT, MASK_SUCCESS, MASK_UNREGISTERED, REGISTRATION_DONE, REGISTRATION_NONE, REGISTRATION_NOT_NEEDED, TRANLOCAL_COMMUTING, TRANLOCAL_CONSTRUCTING, TRANLOCAL_READ, TRANLOCAL_WRITE, TRANSACTIONTYPE_FAT_FIXED_LENGTH, TRANSACTIONTYPE_FAT_MONO, TRANSACTIONTYPE_FAT_VARIABLE_LENGTH, TRANSACTIONTYPE_LEAN_FIXED_LENGTH, TRANSACTIONTYPE_LEAN_MONO, TX_ABORTED, TX_ACTIVE, TX_COMMITTED, TX_PREPARED, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_INT, TYPE_LONG, TYPE_REF, VERSION_UNCOMMITTEDFields inherited from interface org.multiverse.MultiverseConstants
LOCKMODE_EXCLUSIVE, LOCKMODE_NONE, LOCKMODE_READ, LOCKMODE_WRITE, SHAKE_BUGS, SPIN_YIELD, TRACING_ENABLED -
Constructor Summary
ConstructorsConstructorDescriptionGammaTxnBoolean(boolean value) GammaTxnBoolean(GammaStm stm) GammaTxnBoolean(GammaStm stm, boolean b) GammaTxnBoolean(GammaTxn tx, boolean value) -
Method Summary
Modifier and TypeMethodDescriptionfinal booleanalter(GammaTxn tx, BooleanFunction function, boolean returnOld) final booleanalterAndGet(BooleanFunction function) Alters the value stored in this Ref using the provided function and returns the result.final booleanalterAndGet(Txn tx, BooleanFunction function) Alters the value stored in this Ref using the provided function and lifting on the provided txn.final booleanalterAndGet(GammaTxn tx, BooleanFunction function) private booleanatomicAlter(BooleanFunction function, boolean returnOld) final booleanatomicAlterAndGet(BooleanFunction function) Atomically applies the function to the current value in this ref and returns the new value.final booleanatomicCompareAndSet(boolean expectedValue, boolean newValue) Executes a compare and set atomically.final booleanAtomically gets the value.final booleanatomicGetAndAlter(BooleanFunction function) Atomically applies the function to alter the value stored in this ref and returns the old value.final booleanatomicGetAndSet(boolean newValue) Atomically sets the value and returns the previous value.final booleanatomicSet(boolean newValue) Atomically sets the value and returns the new value.final StringReturns a String representation of the object using the provided transaction without looking at aTxnThreadLocal.final booleanAtomically gets the value without providing any ordering guarantees.final voidawait(boolean value) Awaits for the value to become the given value.final voidawait(BooleanPredicate predicate) Awaits until the predicate holds.final voidAwaits for the reference to become the given value.final voidawait(Txn tx, BooleanPredicate predicate) Awaits until the predicate holds using the provided txn.final voidfinal voidawait(GammaTxn tx, BooleanPredicate predicate) final voidcommute(BooleanFunction function) Applies the function on the ref in a commuting manner.final voidcommute(Txn tx, BooleanFunction function) Applies the function on the ref in a commuting manner.final voidcommute(GammaTxn tx, BooleanFunction function) final booleanget()Gets the value using the provided txn.final booleanGets the value using the provided txn.final booleanfinal booleangetAndAlter(BooleanFunction function) Alters the value stored in this Ref using the provided function amd returns the old value.final booleangetAndAlter(Txn tx, BooleanFunction function) Alters the value stored in this Ref using the function and returns the old value, using the provided txn.final booleangetAndAlter(GammaTxn tx, BooleanFunction function) final booleangetAndLock(LockMode lockMode) Gets the value and applies the lock.final booleangetAndLock(Txn tx, LockMode lockMode) Gets the value using the provided txn and acquired the lock with the specified LockMode.final booleangetAndLock(GammaTxn tx, LockMode lockMode) final booleangetAndSet(boolean value) Sets the value the value and returns the new value.final booleanSets the value using the provided txn.final booleanfinal booleangetAndSetAndLock(boolean value, LockMode lockMode) Sets the value, acquired the Lock with the specified Lockmode and returns the previous value.final booleangetAndSetAndLock(Txn tx, boolean value, LockMode lockMode) Sets the value and acquired the Lock with the provided LockMode.final booleangetAndSetAndLock(GammaTxn tx, boolean value, LockMode lockMode) final booleanset(boolean value) Sets the new value.final booleanSets the new value using the provided txn.final booleanfinal booleansetAndLock(boolean value, LockMode lockMode) Sets the new value and applies the lock.final booleansetAndLock(Txn tx, boolean value, LockMode lockMode) Sets the new value using the provided txn.final booleansetAndLock(GammaTxn tx, boolean value, LockMode lockMode) final StringReturns a debug representation of the TxnObject.final StringtoString()Returns a String representation of the Object using theTxnon theTxnThreadLocal.final StringReturns a String representation of the object using the providedTxn.final StringMethods inherited from class org.multiverse.stms.gamma.transactionalobjects.BaseGammaTxnRef
acquire, acquire, acquire, arriveAndExclusiveLockOrBackoff, atomicCompareAndSetLong, atomicGetLong, atomicObjectGet, atomicSetLong, atomicSetObject, commit, ensure, ensure, ensure, flattenCommute, getLong, getObject, hasReadConflict, leanCommit, load, openForCommute, openForCommute, openForCommute, openForCommute, openForConstruction, openForConstruction, openForConstruction, openForConstruction, openForRead, openForRead, openForRead, openForRead, openForRead, openForRead, openForWrite, openForWrite, openForWrite, openForWrite, openForWrite, openForWrite, prepare, registerChangeListener, releaseAfterFailure, releaseAfterReading, releaseAfterUpdate, setLong, setObject, tryLockAndCheckConflictMethods inherited from class org.multiverse.stms.gamma.transactionalobjects.AbstractGammaObject
___removeListenersAfterWrite, ___toOrecString, arrive, arriveAndExclusiveLock, arriveAndLock, atomicGetLockMode, atomicGetLockModeAsInt, departAfterFailure, departAfterFailureAndUnlock, departAfterReading, departAfterReadingAndUnlock, departAfterUpdateAndUnlock, getLock, getLockMode, getLockMode, getLockMode, getReadBiasedThreshold, getReadLockCount, getReadLockCount, getReadonlyCount, getReadonlyCount, getStm, getSurplus, getSurplus, getVersion, hasAnyLock, hasExclusiveLock, hasExclusiveLock, hasWriteLock, hasWriteLock, hasWriteOrExclusiveLock, identityHashCode, isReadBiased, isReadBiased, lockAfterArrive, setExclusiveLock, setIsReadBiased, setReadLockCount, setReadonlyCount, setSurplus, setWriteLock, unlockByUnregistered, upgradeReadLock, upgradeWriteLock, waitForExclusiveLockToBecomeFree
-
Constructor Details
-
GammaTxnBoolean
public GammaTxnBoolean(boolean value) -
GammaTxnBoolean
-
GammaTxnBoolean
-
GammaTxnBoolean
-
GammaTxnBoolean
-
-
Method Details
-
get
public final boolean get()Description copied from interface:TxnBooleanGets the value using the provided txn.- Specified by:
getin interfaceTxnBoolean- Returns:
- the current value.
- See Also:
-
get
Description copied from interface:TxnBooleanGets the value using the provided txn.- Specified by:
getin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.- Returns:
- the value stored in the ref.
-
get
-
getAndLock
Description copied from interface:TxnBooleanGets the value and applies the lock. If the current lockMode already is higher than the provided lockMode the Lock is not upgraded to a higher value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndLockin interfaceTxnBoolean- Parameters:
lockMode- the LockMode applied.- Returns:
- the current value.
- See Also:
-
getAndLock
Description copied from interface:TxnBooleanGets the value using the provided txn and acquired the lock with the specified LockMode.- Specified by:
getAndLockin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.lockMode- the LockMode used- Returns:
- the value stored in the ref.
-
getAndLock
-
set
public final boolean set(boolean value) Description copied from interface:TxnBooleanSets the new value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
setin interfaceTxnBoolean- Parameters:
value- the new value.- Returns:
- the new value.
-
set
Description copied from interface:TxnBooleanSets the new value using the provided txn.- Specified by:
setin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.value- the new value- Returns:
- the old value
-
set
-
setAndLock
Description copied from interface:TxnBooleanSets the new value and applies the lock.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
setAndLockin interfaceTxnBoolean- Parameters:
value- the new value.lockMode- the used LockMode.- Returns:
- the new value.
-
setAndLock
Description copied from interface:TxnBooleanSets the new value using the provided txn.- Specified by:
setAndLockin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.value- the new valuelockMode- the lockMode used.- Returns:
- the old value
-
setAndLock
-
getAndSet
public final boolean getAndSet(boolean value) Description copied from interface:TxnBooleanSets the value the value and returns the new value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndSetin interfaceTxnBoolean- Parameters:
value- the new value.- Returns:
- the old value.
-
getAndSet
Description copied from interface:TxnBooleanSets the value using the provided txn.- Specified by:
getAndSetin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.value- the new value.- Returns:
- the old value.
-
getAndSetAndLock
Description copied from interface:TxnBooleanSets the value, acquired the Lock with the specified Lockmode and returns the previous value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndSetAndLockin interfaceTxnBoolean- Parameters:
value- the new value.lockMode- the LockMode used.- Returns:
- the old value.
-
getAndSetAndLock
Description copied from interface:TxnBooleanSets the value and acquired the Lock with the provided LockMode.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndSetAndLockin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.value- the new value.lockMode- the LockMode used.- Returns:
- the old value.
-
getAndSetAndLock
-
getAndSet
-
atomicGet
public final boolean atomicGet()Description copied from interface:TxnBooleanAtomically gets the value. The value could be stale as soon as it is returned. This method doesn't care about any running txns. It could be that this call fails e.g. when a ref is locked. If you don't care about correct orderings, see theTxnBoolean.atomicWeakGet().- Specified by:
atomicGetin interfaceTxnBoolean- Returns:
- the current value.
-
atomicWeakGet
public final boolean atomicWeakGet()Description copied from interface:TxnBooleanAtomically gets the value without providing any ordering guarantees. This method is extremely cheap and will never fail. So even if the ref is privatized, this call will still complete.It is the best method to call if you just want to get the current value stored.
- Specified by:
atomicWeakGetin interfaceTxnBoolean- Returns:
- the value.
-
atomicSet
public final boolean atomicSet(boolean newValue) Description copied from interface:TxnBooleanAtomically sets the value and returns the new value. This method doesn't care about any running txns.- Specified by:
atomicSetin interfaceTxnBoolean- Parameters:
newValue- the new value.- Returns:
- the new value.
-
atomicGetAndSet
public final boolean atomicGetAndSet(boolean newValue) Description copied from interface:TxnBooleanAtomically sets the value and returns the previous value. This method doesn't care about any running txns.- Specified by:
atomicGetAndSetin interfaceTxnBoolean- Parameters:
newValue- the new value.- Returns:
- the old value.
-
commute
Description copied from interface:TxnBooleanApplies the function on the ref in a commuting manner. So if there are no dependencies, the function will commute. If somehow there already is a dependency or a dependency is formed on the result of the commuting function, the function will not commute and will be exactly the same as an alter.This is different than the behavior in Clojure where the commute will be re-applied at the end of the txn, even though some dependency is introduced, which can lead to inconsistencies.
This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
commutein interfaceTxnBoolean- Parameters:
function- the function to apply to this reference.
-
commute
Description copied from interface:TxnBooleanApplies the function on the ref in a commuting manner. So if there are no dependencies, the function will commute. If somehow there already is a dependency or a dependency is formed on the result of the commuting function, the function will not commute and will be exactly the same as an alter.This is different than the behavior in Clojure where the commute will be re-applied at the end of the txn, even though some dependency is introduced, which can lead to inconsistencies.
This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
commutein interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.function- the function to apply to this reference.
-
commute
-
getAndAlter
Description copied from interface:TxnBooleanAlters the value stored in this Ref using the provided function amd returns the old value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndAlterin interfaceTxnBoolean- Parameters:
function- the function that alters the value stored in this Ref.- Returns:
- the old value.
-
getAndAlter
Description copied from interface:TxnBooleanAlters the value stored in this Ref using the function and returns the old value, using the provided txn.- Specified by:
getAndAlterin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.function- the function that alters the value stored in this Ref.- Returns:
- the old value
-
getAndAlter
-
alterAndGet
Description copied from interface:TxnBooleanAlters the value stored in this Ref using the provided function and returns the result.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
alterAndGetin interfaceTxnBoolean- Parameters:
function- the function that alters the value stored in this Ref.- Returns:
- the new value.
-
alterAndGet
Description copied from interface:TxnBooleanAlters the value stored in this Ref using the provided function and lifting on the provided txn.- Specified by:
alterAndGetin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.function- the function that alters the value stored in this Ref.- Returns:
- the new value.
-
alterAndGet
-
alter
-
atomicAlterAndGet
Description copied from interface:TxnBooleanAtomically applies the function to the current value in this ref and returns the new value. This method doesn't care about any running txns.- Specified by:
atomicAlterAndGetin interfaceTxnBoolean- Parameters:
function- the Function used- Returns:
- the new value.
-
atomicGetAndAlter
Description copied from interface:TxnBooleanAtomically applies the function to alter the value stored in this ref and returns the old value. This method doesn't care about any running txns.- Specified by:
atomicGetAndAlterin interfaceTxnBoolean- Parameters:
function- the Function used- Returns:
- the old value.
-
atomicAlter
-
atomicCompareAndSet
public final boolean atomicCompareAndSet(boolean expectedValue, boolean newValue) Description copied from interface:TxnBooleanExecutes a compare and set atomically. This method doesn't care about any running txns.- Specified by:
atomicCompareAndSetin interfaceTxnBoolean- Parameters:
expectedValue- the expected value.newValue- the new value.- Returns:
- true if the compareAndSwap was a success, false otherwise.
-
await
public final void await(boolean value) Description copied from interface:TxnBooleanAwaits for the value to become the given value. If the value already has the the specified value, the call continues, else a retry is done.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
awaitin interfaceTxnBoolean- Parameters:
value- the value to wait for.
-
await
Description copied from interface:TxnBooleanAwaits for the reference to become the given value. If the value already has the the specified value, the call continues, else a retry is done.- Specified by:
awaitin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.value- the value to wait for.
-
await
-
await
Description copied from interface:TxnBooleanAwaits until the predicate holds. If the value already evaluates to true, the call continues else a retry is done. If the predicate throws an exception, the txn is aborted and the throwable is propagated.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
awaitin interfaceTxnBoolean- Parameters:
predicate- the predicate to evaluate.
-
await
Description copied from interface:TxnBooleanAwaits until the predicate holds using the provided txn. If the value already evaluates to true, the call continues else a retry is done. If the predicate throws an exception, the txn is aborted and the throwable is propagated.- Specified by:
awaitin interfaceTxnBoolean- Parameters:
tx- theTxnused for this operation.predicate- the predicate to evaluate.
-
await
-
toDebugString
Description copied from interface:TxnObjectReturns a debug representation of the TxnObject. The data used doesn't have to be consistent, it is a best effort. This method doesn't rely on a running transaction.- Specified by:
toDebugStringin interfaceTxnObject- Returns:
- the debug representation of the TxnObject.
-
toString
Description copied from interface:TxnObjectReturns a String representation of the Object using theTxnon theTxnThreadLocal. -
toString
Description copied from interface:TxnObjectReturns a String representation of the object using the providedTxn. -
toString
-
atomicToString
Description copied from interface:TxnObjectReturns a String representation of the object using the provided transaction without looking at aTxnThreadLocal. The outputted value doesn't need to be consistent from some point in time, only a best effort is made.- Specified by:
atomicToStringin interfaceTxnObject- Returns:
- the String representation.
-