Class GammaTxnDouble
- All Implemented Interfaces:
Lock,TxnDouble,TxnObject,MultiverseConstants,GammaConstants,GammaObject
-
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
ConstructorsConstructorDescriptionGammaTxnDouble(double value) GammaTxnDouble(GammaStm stm) GammaTxnDouble(GammaStm stm, double value) GammaTxnDouble(GammaTxn tx, double value) -
Method Summary
Modifier and TypeMethodDescriptionfinal doublealter(GammaTxn tx, DoubleFunction function, boolean returnOld) final doublealterAndGet(DoubleFunction function) Alters the value stored in this Ref using the provided function and returns the result.final doublealterAndGet(Txn tx, DoubleFunction function) Alters the value stored in this Ref using the provided function and lifting on the provided txn.final doublealterAndGet(GammaTxn tx, DoubleFunction function) private doubleatomicAlter(DoubleFunction function, boolean returnOld) final doubleatomicAlterAndGet(DoubleFunction function) Atomically applies the function to the current value in this ref and returns the new value.final booleanatomicCompareAndSet(double expectedValue, double newValue) Executes a compare and set atomically.final doubleAtomically gets the value.final doubleatomicGetAndAlter(DoubleFunction function) Atomically applies the function to alter the value stored in this ref and returns the old value.final doubleatomicGetAndIncrement(double amount) Atomically increments the value and returns the old value.final doubleatomicGetAndSet(double newValue) Atomically sets the value and returns the previous value.private doubleatomicIncrement(double amount, boolean returnOld) final doubleatomicIncrementAndGet(double amount) Atomically increments the value and returns the old value.final doubleatomicSet(double 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 doubleAtomically gets the value without providing any ordering guarantees.final voidawait(double value) Awaits for the value to become the given value.final voidawait(DoublePredicate predicate) Awaits until the predicate holds.final voidAwaits for the reference to become the given value.final voidawait(Txn tx, DoublePredicate predicate) Awaits until the predicate holds using the provided txn.final voidfinal voidawait(GammaTxn tx, DoublePredicate predicate) final voidcommute(DoubleFunction function) Applies the function on the ref in a commuting manner.final voidcommute(Txn tx, DoubleFunction function) Applies the function on the ref in a commuting manner.final voidcommute(GammaTxn tx, DoubleFunction function) final doubleget()Gets the value using the provided txn.final doubleGets the value using the provided txn.final doublefinal doublegetAndAlter(DoubleFunction function) Alters the value stored in this Ref using the provided function amd returns the old value.final doublegetAndAlter(Txn tx, DoubleFunction function) Alters the value stored in this Ref using the function and returns the old value, using the provided txn.final doublegetAndAlter(GammaTxn tx, DoubleFunction function) final doublegetAndIncrement(double amount) Increments the value and returns the old value.final doublegetAndIncrement(Txn tx, double amount) Increments the value and returns the old value using the provided txn.final doublegetAndIncrement(GammaTxn tx, double amount) final doublegetAndLock(LockMode lockMode) Gets the value and applies the lock.final doublegetAndLock(Txn tx, LockMode lockMode) Gets the value using the provided txn and acquired the lock with the specified LockMode.final doublegetAndLock(GammaTxn tx, LockMode lockMode) final doublegetAndSet(double value) Sets the value the value and returns the new value.final doubleSets the value using the provided txn.final doublefinal doublegetAndSetAndLock(double value, LockMode lockMode) Sets the value, acquired the Lock with the specified Lockmode and returns the previous value.final doublegetAndSetAndLock(Txn tx, double value, LockMode lockMode) Sets the value and acquired the Lock with the provided LockMode.final doublegetAndSetAndLock(GammaTxn tx, double value, LockMode lockMode) final doubleincrementAndGet(double amount) Increments and gets the new value.final doubleincrementAndGet(Txn tx, double amount) Increments and gets the new value using the provided txn.final doubleincrementAndGet(GammaTxn tx, double amount) final doubleset(double value) Sets the new value.final doubleSets the new value using the provided txn.final doublefinal doublesetAndLock(double value, LockMode lockMode) Sets the new value and applies the lock.final doublesetAndLock(Txn tx, double value, LockMode lockMode) Sets the new value using the provided txn.final doublesetAndLock(GammaTxn tx, double 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
-
GammaTxnDouble
public GammaTxnDouble(double value) -
GammaTxnDouble
-
GammaTxnDouble
-
GammaTxnDouble
-
GammaTxnDouble
-
-
Method Details
-
get
public final double get()Description copied from interface:TxnDoubleGets the value using the provided txn. -
get
Description copied from interface:TxnDoubleGets the value using the provided txn. -
get
-
getAndLock
Description copied from interface:TxnDoubleGets 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 interfaceTxnDouble- Parameters:
lockMode- the LockMode applied.- Returns:
- the current value.
- See Also:
-
getAndLock
Description copied from interface:TxnDoubleGets the value using the provided txn and acquired the lock with the specified LockMode.- Specified by:
getAndLockin interfaceTxnDouble- Parameters:
tx- theTxnused for this operation.lockMode- the LockMode used- Returns:
- the value stored in the ref.
-
getAndLock
-
set
public final double set(double value) Description copied from interface:TxnDoubleSets the new value.This call lifts on the
Txnstored in theTxnThreadLocal. -
set
Description copied from interface:TxnDoubleSets the new value using the provided txn. -
set
-
setAndLock
Description copied from interface:TxnDoubleSets the new value and applies the lock.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
setAndLockin interfaceTxnDouble- Parameters:
value- the new value.lockMode- the used LockMode.- Returns:
- the new value.
-
setAndLock
Description copied from interface:TxnDoubleSets the new value using the provided txn.- Specified by:
setAndLockin interfaceTxnDouble- Parameters:
tx- theTxnused for this operation.value- the new valuelockMode- the lockMode used.- Returns:
- the old value
-
setAndLock
-
getAndSet
public final double getAndSet(double value) Description copied from interface:TxnDoubleSets the value the value and returns the new value.This call lifts on the
Txnstored in theTxnThreadLocal. -
getAndSet
Description copied from interface:TxnDoubleSets the value using the provided txn. -
getAndSet
-
getAndSetAndLock
Description copied from interface:TxnDoubleSets 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 interfaceTxnDouble- Parameters:
value- the new value.lockMode- the LockMode used.- Returns:
- the old value.
-
getAndSetAndLock
Description copied from interface:TxnDoubleSets the value and acquired the Lock with the provided LockMode.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndSetAndLockin interfaceTxnDouble- Parameters:
tx- theTxnused for this operation.value- the new value.lockMode- the LockMode used.- Returns:
- the old value.
-
getAndSetAndLock
-
atomicGet
public final double atomicGet()Description copied from interface:TxnDoubleAtomically 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 theTxnDouble.atomicWeakGet(). -
atomicWeakGet
public final double atomicWeakGet()Description copied from interface:TxnDoubleAtomically 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 interfaceTxnDouble- Returns:
- the value.
-
atomicSet
public final double atomicSet(double newValue) Description copied from interface:TxnDoubleAtomically sets the value and returns the new value. This method doesn't care about any running txns. -
atomicGetAndSet
public final double atomicGetAndSet(double newValue) Description copied from interface:TxnDoubleAtomically sets the value and returns the previous value. This method doesn't care about any running txns.- Specified by:
atomicGetAndSetin interfaceTxnDouble- Parameters:
newValue- the new value.- Returns:
- the old value.
-
commute
Description copied from interface:TxnDoubleApplies 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. -
commute
Description copied from interface:TxnDoubleApplies 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. -
commute
-
atomicAlterAndGet
Description copied from interface:TxnDoubleAtomically 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 interfaceTxnDouble- Parameters:
function- the Function used- Returns:
- the new value.
-
atomicGetAndAlter
Description copied from interface:TxnDoubleAtomically 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 interfaceTxnDouble- Parameters:
function- the Function used- Returns:
- the old value.
-
atomicAlter
-
alterAndGet
Description copied from interface:TxnDoubleAlters 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 interfaceTxnDouble- Parameters:
function- the function that alters the value stored in this Ref.- Returns:
- the new value.
-
alterAndGet
Description copied from interface:TxnDoubleAlters the value stored in this Ref using the provided function and lifting on the provided txn.- Specified by:
alterAndGetin interfaceTxnDouble- Parameters:
tx- theTxnused for this operation.function- the function that alters the value stored in this Ref.- Returns:
- the new value.
-
alterAndGet
-
getAndAlter
Description copied from interface:TxnDoubleAlters 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 interfaceTxnDouble- Parameters:
function- the function that alters the value stored in this Ref.- Returns:
- the old value.
-
getAndAlter
Description copied from interface:TxnDoubleAlters the value stored in this Ref using the function and returns the old value, using the provided txn.- Specified by:
getAndAlterin interfaceTxnDouble- Parameters:
tx- theTxnused for this operation.function- the function that alters the value stored in this Ref.- Returns:
- the old value
-
getAndAlter
-
alter
-
atomicCompareAndSet
public final boolean atomicCompareAndSet(double expectedValue, double newValue) Description copied from interface:TxnDoubleExecutes a compare and set atomically. This method doesn't care about any running txns.- Specified by:
atomicCompareAndSetin interfaceTxnDouble- Parameters:
expectedValue- the expected value.newValue- the new value.- Returns:
- true if the compareAndSwap was a success, false otherwise.
-
getAndIncrement
public final double getAndIncrement(double amount) Description copied from interface:TxnDoubleIncrements the value and returns the old value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndIncrementin interfaceTxnDouble- Parameters:
amount- the amount to increment with.- Returns:
- the old value.
-
getAndIncrement
Description copied from interface:TxnDoubleIncrements the value and returns the old value using the provided txn.- Specified by:
getAndIncrementin interfaceTxnDouble- Parameters:
tx- theTxnused for this operation.amount- the amount to increment with.- Returns:
- the old value.
-
getAndIncrement
-
atomicGetAndIncrement
public final double atomicGetAndIncrement(double amount) Description copied from interface:TxnDoubleAtomically increments the value and returns the old value. This method doesn't care about any running txns.- Specified by:
atomicGetAndIncrementin interfaceTxnDouble- Parameters:
amount- the amount to increase with.- Returns:
- the old value.
-
atomicIncrementAndGet
public final double atomicIncrementAndGet(double amount) Description copied from interface:TxnDoubleAtomically increments the value and returns the old value. This method doesn't care about any running txns.- Specified by:
atomicIncrementAndGetin interfaceTxnDouble- Parameters:
amount- the amount to increment with.- Returns:
- the new value.
-
atomicIncrement
private double atomicIncrement(double amount, boolean returnOld) -
incrementAndGet
public final double incrementAndGet(double amount) Description copied from interface:TxnDoubleIncrements and gets the new value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
incrementAndGetin interfaceTxnDouble- Parameters:
amount- the amount to increment with.- Returns:
- the new value.
-
incrementAndGet
Description copied from interface:TxnDoubleIncrements and gets the new value using the provided txn.- Specified by:
incrementAndGetin interfaceTxnDouble- Parameters:
tx- theTxnused for this operation.amount- the amount to increment with.- Returns:
- the new value.
-
incrementAndGet
-
await
public final void await(double value) Description copied from interface:TxnDoubleAwaits 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. -
await
Description copied from interface:TxnDoubleAwaits 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. -
await
-
await
Description copied from interface:TxnDoubleAwaits 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. -
await
Description copied from interface:TxnDoubleAwaits 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. -
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.
-