Class GammaTxnInteger
- All Implemented Interfaces:
Lock, TxnInteger, TxnObject, MultiverseConstants, GammaConstants, GammaObject
-
Field Summary
Fields inherited from class BaseGammaTxnRef
long_value, ref_value, typeFields inherited from class 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 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 MultiverseConstants
LOCKMODE_EXCLUSIVE, LOCKMODE_NONE, LOCKMODE_READ, LOCKMODE_WRITE, SHAKE_BUGS, SPIN_YIELD, TRACING_ENABLED -
Constructor Summary
ConstructorsConstructorDescriptionGammaTxnInteger(int value) GammaTxnInteger(GammaStm stm) GammaTxnInteger(GammaStm stm, int value) GammaTxnInteger(GammaTxn tx, int value) -
Method Summary
Modifier and TypeMethodDescriptionprivate intalter(GammaTxn tx, IntFunction function, boolean returnOld) final intalterAndGet(IntFunction function) Alters the value stored in this Ref using the provided function and returns the result.final intalterAndGet(Txn tx, IntFunction function) Alters the value stored in this Ref using the provided function and lifting on the provided txn.final intalterAndGet(GammaTxn tx, IntFunction function) private intatomicAlter(IntFunction function, boolean returnOld) final intatomicAlterAndGet(IntFunction function) Atomically applies the function to the current value in this ref and returns the new value.final booleanatomicCompareAndSet(int expectedValue, int newValue) Executes a compare and set atomically.final intAtomically gets the value.final intatomicGetAndAlter(IntFunction function) Atomically applies the function to alter the value stored in this ref and returns the old value.final intatomicGetAndIncrement(int amount) Atomically increments the value and returns the old value.final intatomicGetAndSet(int newValue) Atomically sets the value and returns the previous value.private intatomicIncrement(int amount, boolean returnOld) final intatomicIncrementAndGet(int amount) Atomically increments the value and returns the old value.final intatomicSet(int 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 intAtomically gets the value without providing any ordering guarantees.final voidawait(int value) Awaits for the value to become the given value.final voidawait(IntPredicate predicate) Awaits until the predicate holds.final voidAwaits for the reference to become the given value.final voidawait(Txn tx, IntPredicate predicate) Awaits until the predicate holds using the provided txn.final voidfinal voidawait(GammaTxn tx, IntPredicate predicate) final voidcommute(IntFunction function) Applies the function on the ref in a commuting manner.final voidcommute(Txn tx, IntFunction function) Applies the function on the ref in a commuting manner.final voidcommute(GammaTxn tx, IntFunction function) final voidDecrements the value by one.final voiddecrement(int amount) Decrements the value by the given amount.final voidDecrements the value by one using the provided txn.final voidDecrements the value by the given amount using the provided txn.final intget()Gets the value using the provided txn.final intGets the value using the provided txn.final intfinal intgetAndAlter(IntFunction function) Alters the value stored in this Ref using the provided function amd returns the old value.final intgetAndAlter(Txn tx, IntFunction function) Alters the value stored in this Ref using the function and returns the old value, using the provided txn.final intgetAndAlter(GammaTxn tx, IntFunction function) final intgetAndIncrement(int amount) Increments the value and returns the old value.final intgetAndIncrement(Txn tx, int amount) Increments the value and returns the old value using the provided txn.final intgetAndIncrement(GammaTxn tx, int amount) intgetAndLock(LockMode lockMode) Gets the value and applies the lock.final intgetAndLock(Txn tx, LockMode lockMode) Gets the value using the provided txn and acquired the lock with the specified LockMode.final intgetAndLock(GammaTxn tx, LockMode lockMode) final intgetAndSet(int value) Sets the value the value and returns the new value.final intSets the value using the provided txn.final intfinal intgetAndSetAndLock(int value, LockMode lockMode) Sets the value, acquired the Lock with the specified Lockmode and returns the previous value.final intgetAndSetAndLock(Txn tx, int value, LockMode lockMode) Sets the value and acquired the Lock with the provided LockMode.final intgetAndSetLock(GammaTxn tx, int value, LockMode lockMode) final voidIncrements the value by one.final voidincrement(int amount) Increments the value by the given amount.final voidIncrements the value by one using the provided txn.final voidIncrements the value by the given amount using the provided txn.final voidprivate intfinal intincrementAndGet(int amount) Increments and gets the new value.final intincrementAndGet(Txn tx, int amount) Increments and gets the new value using the provided txn.final intincrementAndGet(GammaTxn tx, int amount) final intset(int value) Sets the new value.final intSets the new value using the provided txn.final intfinal intsetAndLock(int value, LockMode lockMode) Sets the new value and applies the lock.final intsetAndLock(Txn tx, int value, LockMode lockMode) Sets the new value using the provided txn.final intsetAndLock(GammaTxn tx, int 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 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 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
-
GammaTxnInteger
public GammaTxnInteger(int value) -
GammaTxnInteger
-
GammaTxnInteger
-
GammaTxnInteger
-
GammaTxnInteger
-
-
Method Details
-
get
public final int get()Description copied from interface:TxnIntegerGets the value using the provided txn.- Specified by:
getin interfaceTxnInteger- Returns:
- the current value.
- See Also:
-
get
Description copied from interface:TxnIntegerGets the value using the provided txn.- Specified by:
getin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.- Returns:
- the value stored in the ref.
-
get
-
getAndLock
Description copied from interface:TxnIntegerGets 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 interfaceTxnInteger- Parameters:
lockMode- the LockMode applied.- Returns:
- the current value.
- See Also:
-
getAndLock
Description copied from interface:TxnIntegerGets the value using the provided txn and acquired the lock with the specified LockMode.- Specified by:
getAndLockin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.lockMode- the LockMode used- Returns:
- the value stored in the ref.
-
getAndLock
-
set
public final int set(int value) Description copied from interface:TxnIntegerSets the new value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
setin interfaceTxnInteger- Parameters:
value- the new value.- Returns:
- the new value.
-
set
Description copied from interface:TxnIntegerSets the new value using the provided txn.- Specified by:
setin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.value- the new value- Returns:
- the old value
-
set
-
setAndLock
Description copied from interface:TxnIntegerSets the new value and applies the lock.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
setAndLockin interfaceTxnInteger- Parameters:
value- the new value.lockMode- the used LockMode.- Returns:
- the new value.
-
setAndLock
Description copied from interface:TxnIntegerSets the new value using the provided txn.- Specified by:
setAndLockin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.value- the new valuelockMode- the lockMode used.- Returns:
- the old value
-
setAndLock
-
getAndSet
public final int getAndSet(int value) Description copied from interface:TxnIntegerSets the value the value and returns the new value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndSetin interfaceTxnInteger- Parameters:
value- the new value.- Returns:
- the old value.
-
getAndSet
Description copied from interface:TxnIntegerSets the value using the provided txn.- Specified by:
getAndSetin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.value- the new value.- Returns:
- the old value.
-
getAndSet
-
getAndSetAndLock
Description copied from interface:TxnIntegerSets 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 interfaceTxnInteger- Parameters:
value- the new value.lockMode- the LockMode used.- Returns:
- the old value.
-
getAndSetAndLock
Description copied from interface:TxnIntegerSets the value and acquired the Lock with the provided LockMode.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndSetAndLockin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.value- the new value.lockMode- the LockMode used.- Returns:
- the old value.
-
getAndSetLock
-
atomicGet
public final int atomicGet()Description copied from interface:TxnIntegerAtomically 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 theTxnInteger.atomicWeakGet().- Specified by:
atomicGetin interfaceTxnInteger- Returns:
- the current value.
-
atomicWeakGet
public final int atomicWeakGet()Description copied from interface:TxnIntegerAtomically 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 interfaceTxnInteger- Returns:
- the value.
-
atomicSet
public final int atomicSet(int newValue) Description copied from interface:TxnIntegerAtomically sets the value and returns the new value. This method doesn't care about any running txns.- Specified by:
atomicSetin interfaceTxnInteger- Parameters:
newValue- the new value.- Returns:
- the new value.
-
atomicGetAndSet
public final int atomicGetAndSet(int newValue) Description copied from interface:TxnIntegerAtomically sets the value and returns the previous value. This method doesn't care about any running txns.- Specified by:
atomicGetAndSetin interfaceTxnInteger- Parameters:
newValue- the new value.- Returns:
- the old value.
-
commute
Description copied from interface:TxnIntegerApplies 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 interfaceTxnInteger- Parameters:
function- the function to apply to this reference.
-
commute
Description copied from interface:TxnIntegerApplies 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 interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.function- the function to apply to this reference.
-
commute
-
atomicAlterAndGet
Description copied from interface:TxnIntegerAtomically 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 interfaceTxnInteger- Parameters:
function- the Function used- Returns:
- the new value.
-
atomicGetAndAlter
Description copied from interface:TxnIntegerAtomically 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 interfaceTxnInteger- Parameters:
function- the Function used- Returns:
- the old value.
-
atomicAlter
-
alterAndGet
Description copied from interface:TxnIntegerAlters 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 interfaceTxnInteger- Parameters:
function- the function that alters the value stored in this Ref.- Returns:
- the new value.
-
alterAndGet
Description copied from interface:TxnIntegerAlters the value stored in this Ref using the provided function and lifting on the provided txn.- Specified by:
alterAndGetin interfaceTxnInteger- 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:TxnIntegerAlters 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 interfaceTxnInteger- Parameters:
function- the function that alters the value stored in this Ref.- Returns:
- the old value.
-
getAndAlter
Description copied from interface:TxnIntegerAlters the value stored in this Ref using the function and returns the old value, using the provided txn.- Specified by:
getAndAlterin interfaceTxnInteger- 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(int expectedValue, int newValue) Description copied from interface:TxnIntegerExecutes a compare and set atomically. This method doesn't care about any running txns.- Specified by:
atomicCompareAndSetin interfaceTxnInteger- Parameters:
expectedValue- the expected value.newValue- the new value.- Returns:
- true if the compareAndSwap was a success, false otherwise.
-
atomicGetAndIncrement
public final int atomicGetAndIncrement(int amount) Description copied from interface:TxnIntegerAtomically increments the value and returns the old value. This method doesn't care about any running txns.- Specified by:
atomicGetAndIncrementin interfaceTxnInteger- Parameters:
amount- the amount to increase with.- Returns:
- the old value.
-
atomicIncrementAndGet
public final int atomicIncrementAndGet(int amount) Description copied from interface:TxnIntegerAtomically increments the value and returns the old value. This method doesn't care about any running txns.- Specified by:
atomicIncrementAndGetin interfaceTxnInteger- Parameters:
amount- the amount to increment with.- Returns:
- the new value.
-
atomicIncrement
private int atomicIncrement(int amount, boolean returnOld) -
getAndIncrement
public final int getAndIncrement(int amount) Description copied from interface:TxnIntegerIncrements the value and returns the old value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
getAndIncrementin interfaceTxnInteger- Parameters:
amount- the amount to increment with.- Returns:
- the old value.
-
getAndIncrement
Description copied from interface:TxnIntegerIncrements the value and returns the old value using the provided txn.- Specified by:
getAndIncrementin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.amount- the amount to increment with.- Returns:
- the old value.
-
getAndIncrement
-
incrementAndGet
public final int incrementAndGet(int amount) Description copied from interface:TxnIntegerIncrements and gets the new value.This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
incrementAndGetin interfaceTxnInteger- Parameters:
amount- the amount to increment with.- Returns:
- the new value.
-
incrementAndGet
Description copied from interface:TxnIntegerIncrements and gets the new value using the provided txn.- Specified by:
incrementAndGetin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.amount- the amount to increment with.- Returns:
- the new value.
-
incrementAndGet
-
increment
-
increment
public final void increment()Description copied from interface:TxnIntegerIncrements the value by one.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
incrementin interfaceTxnInteger
-
increment
Description copied from interface:TxnIntegerIncrements the value by one using the provided txn.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
- Specified by:
incrementin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.
-
increment
public final void increment(int amount) Description copied from interface:TxnIntegerIncrements the value by the given amount.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
incrementin interfaceTxnInteger- Parameters:
amount- the amount to increase with
-
increment
Description copied from interface:TxnIntegerIncrements the value by the given amount using the provided txn.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
- Specified by:
incrementin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.amount- the amount to increment with
-
increment
-
decrement
public final void decrement()Description copied from interface:TxnIntegerDecrements the value by one.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
decrementin interfaceTxnInteger
-
decrement
Description copied from interface:TxnIntegerDecrements the value by one using the provided txn.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
- Specified by:
decrementin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.
-
decrement
public final void decrement(int amount) Description copied from interface:TxnIntegerDecrements the value by the given amount.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
This call lifts on the
Txnstored in theTxnThreadLocal.- Specified by:
decrementin interfaceTxnInteger- Parameters:
amount- the amount to decrement with
-
decrement
Description copied from interface:TxnIntegerDecrements the value by the given amount using the provided txn.This call is able to commute if there are no dependencies on the value in the txn. That is why this method doesn't have a return value.
- Specified by:
decrementin interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.amount- the amount to decrement with
-
await
public final void await(int value) Description copied from interface:TxnIntegerAwaits 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 interfaceTxnInteger- Parameters:
value- the value to wait for.
-
await
Description copied from interface:TxnIntegerAwaits 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 interfaceTxnInteger- Parameters:
tx- theTxnused for this operation.value- the value to wait for.
-
await
-
await
Description copied from interface:TxnIntegerAwaits 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 interfaceTxnInteger- Parameters:
predicate- the predicate to evaluate.
-
await
Description copied from interface:TxnIntegerAwaits 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 interfaceTxnInteger- 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
-
toString
-
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.
-