public class GammaTxnLong extends BaseGammaTxnRef implements TxnLong
long_value, ref_value, type
___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, version
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_UNCOMMITTED
LOCKMODE_EXCLUSIVE, LOCKMODE_NONE, LOCKMODE_READ, LOCKMODE_WRITE, SHAKE_BUGS, SPIN_YIELD, TRACING_ENABLED
Constructor and Description |
---|
GammaTxnLong(GammaStm stm) |
GammaTxnLong(GammaStm stm,
long initialValue) |
GammaTxnLong(GammaTxn tx) |
GammaTxnLong(GammaTxn tx,
long value) |
GammaTxnLong(long value) |
Modifier and Type | Method and Description |
---|---|
long |
alterAndGet(GammaTxn tx,
LongFunction function) |
long |
alterAndGet(LongFunction function)
Alters the value stored in this Ref using the provided function and returns the result.
|
long |
alterAndGet(Txn tx,
LongFunction function)
Alters the value stored in this Ref using the provided function and lifting on the provided txn.
|
long |
atomicAlterAndGet(LongFunction function)
Atomically applies the function to the current value in this ref and returns the new value.
|
boolean |
atomicCompareAndSet(long expectedValue,
long newValue)
Executes a compare and set atomically.
|
long |
atomicGet()
Atomically gets the value.
|
long |
atomicGetAndAlter(LongFunction function)
Atomically applies the function to alter the value stored in this ref and returns the old value.
|
long |
atomicGetAndIncrement(long amount)
Atomically increments the value and returns the old value.
|
long |
atomicGetAndSet(long newValue)
Atomically sets the value and returns the previous value.
|
long |
atomicIncrementAndGet(long amount)
Atomically increments the value and returns the old value.
|
long |
atomicSet(long newValue)
Atomically sets the value and returns the new value.
|
String |
atomicToString()
Returns a String representation of the object using the provided transaction without looking
at a
TxnThreadLocal . |
long |
atomicWeakGet()
Atomically gets the value without providing any ordering guarantees.
|
void |
await(GammaTxn tx,
long value) |
void |
await(GammaTxn tx,
LongPredicate predicate) |
void |
await(long value)
Awaits for the value to become the given value.
|
void |
await(LongPredicate predicate)
Awaits until the predicate holds.
|
void |
await(Txn tx,
long value)
Awaits for the reference to become the given value.
|
void |
await(Txn tx,
LongPredicate predicate)
Awaits until the predicate holds using the provided txn.
|
void |
commute(GammaTxn tx,
LongFunction function) |
void |
commute(LongFunction function)
Applies the function on the ref in a commuting manner.
|
void |
commute(Txn tx,
LongFunction function)
Applies the function on the ref in a commuting manner.
|
void |
decrement()
Decrements the value by one.
|
void |
decrement(long amount)
Decrements the value by the given amount.
|
void |
decrement(Txn tx)
Decrements the value by one using the provided txn.
|
void |
decrement(Txn tx,
long amount)
Decrements the value by the given amount using the provided txn.
|
long |
get()
Gets the value using the provided txn.
|
long |
get(GammaTxn tx) |
long |
get(Txn tx)
Gets the value using the provided txn.
|
long |
getAndAlter(GammaTxn tx,
LongFunction function) |
long |
getAndAlter(LongFunction function)
Alters the value stored in this Ref using the provided function amd returns the old value.
|
long |
getAndAlter(Txn tx,
LongFunction function)
Alters the value stored in this Ref using the function and returns the old value, using the provided txn.
|
long |
getAndIncrement(GammaTxn tx,
long amount) |
long |
getAndIncrement(long amount)
Increments the value and returns the old value.
|
long |
getAndIncrement(Txn tx,
long amount)
Increments the value and returns the old value using the provided txn.
|
long |
getAndLock(GammaTxn tx,
LockMode lockMode) |
long |
getAndLock(LockMode lockMode)
Gets the value and applies the lock.
|
long |
getAndLock(Txn tx,
LockMode lockMode)
Gets the value using the provided txn and acquired the lock with the specified LockMode.
|
long |
getAndSet(GammaTxn tx,
long value) |
long |
getAndSet(long value)
Sets the value the value and returns the new value.
|
long |
getAndSet(Txn tx,
long value)
Sets the value using the provided txn.
|
long |
getAndSetAndLock(long value,
LockMode lockMode)
Sets the value, acquired the Lock with the specified Lockmode and returns the previous value.
|
long |
getAndSetAndLock(Txn tx,
long value,
LockMode lockMode)
Sets the value and acquired the Lock with the provided LockMode.
|
long |
getAndSetLock(GammaTxn tx,
long value,
LockMode lockMode) |
void |
increment()
Increments the value by one.
|
void |
increment(GammaTxn tx) |
void |
increment(long amount)
Increments the value by the given amount.
|
void |
increment(Txn tx)
Increments the value by one using the provided txn.
|
void |
increment(Txn tx,
long amount)
Increments the value by the given amount using the provided txn.
|
long |
incrementAndGet(GammaTxn tx,
long amount) |
long |
incrementAndGet(long amount)
Increments and gets the new value.
|
long |
incrementAndGet(Txn tx,
long amount)
Increments and gets the new value using the provided txn.
|
long |
set(GammaTxn tx,
long value) |
long |
set(long value)
Sets the new value.
|
long |
set(Txn tx,
long value)
Sets the new value using the provided txn.
|
long |
setAndLock(GammaTxn tx,
long value,
LockMode lockMode) |
long |
setAndLock(long value,
LockMode lockMode)
Sets the new value and applies the lock.
|
long |
setAndLock(Txn tx,
long value,
LockMode lockMode)
Sets the new value using the provided txn.
|
String |
toDebugString()
Returns a debug representation of the TxnObject.
|
String |
toString()
Returns a String representation of the Object using the
Txn on the TxnThreadLocal . |
String |
toString(GammaTxn tx) |
String |
toString(Txn tx)
Returns a String representation of the object using the provided
Txn . |
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, tryLockAndCheckConflict
___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
public GammaTxnLong(long value)
public GammaTxnLong(GammaStm stm)
public GammaTxnLong(GammaStm stm, long initialValue)
public GammaTxnLong(GammaTxn tx)
public GammaTxnLong(GammaTxn tx, long value)
public final long get()
TxnLong
get
in interface TxnLong
TxnLong.atomicGet()
public final long get(Txn tx)
TxnLong
public final long get(GammaTxn tx)
public final long getAndLock(LockMode lockMode)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
getAndLock
in interface TxnLong
lockMode
- the LockMode applied.TxnLong.atomicGet()
public final long getAndLock(Txn tx, LockMode lockMode)
TxnLong
getAndLock
in interface TxnLong
tx
- the Txn
used for this operation.lockMode
- the LockMode usedpublic final long set(long value)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
public final long set(Txn tx, long value)
TxnLong
public final long set(GammaTxn tx, long value)
public final long setAndLock(long value, LockMode lockMode)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
setAndLock
in interface TxnLong
value
- the new value.lockMode
- the used LockMode.public final long setAndLock(Txn tx, long value, LockMode lockMode)
TxnLong
setAndLock
in interface TxnLong
tx
- the Txn
used for this operation.value
- the new valuelockMode
- the lockMode used.public final long getAndSet(long value)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
public final long getAndSet(Txn tx, long value)
TxnLong
public final long getAndSet(GammaTxn tx, long value)
public final long getAndSetAndLock(long value, LockMode lockMode)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
getAndSetAndLock
in interface TxnLong
value
- the new value.lockMode
- the LockMode used.public final long getAndSetAndLock(Txn tx, long value, LockMode lockMode)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
getAndSetAndLock
in interface TxnLong
tx
- the Txn
used for this operation.value
- the new value.lockMode
- the LockMode used.public final long atomicGet()
TxnLong
TxnLong.atomicWeakGet()
.public final long atomicWeakGet()
TxnLong
It is the best method to call if you just want to get the current value stored.
atomicWeakGet
in interface TxnLong
public final long atomicSet(long newValue)
TxnLong
public final long atomicGetAndSet(long newValue)
TxnLong
atomicGetAndSet
in interface TxnLong
newValue
- the new value.public final void commute(LongFunction function)
TxnLong
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 Txn
stored in the TxnThreadLocal
.
public final void commute(Txn tx, LongFunction function)
TxnLong
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 Txn
stored in the TxnThreadLocal
.
public final void commute(GammaTxn tx, LongFunction function)
public final long atomicAlterAndGet(LongFunction function)
TxnLong
atomicAlterAndGet
in interface TxnLong
function
- the Function usedpublic final long alterAndGet(LongFunction function)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
alterAndGet
in interface TxnLong
function
- the function that alters the value stored in this Ref.public final long alterAndGet(Txn tx, LongFunction function)
TxnLong
alterAndGet
in interface TxnLong
tx
- the Txn
used for this operation.function
- the function that alters the value stored in this Ref.public final long alterAndGet(GammaTxn tx, LongFunction function)
public final long atomicGetAndAlter(LongFunction function)
TxnLong
atomicGetAndAlter
in interface TxnLong
function
- the Function usedpublic final long getAndAlter(LongFunction function)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
getAndAlter
in interface TxnLong
function
- the function that alters the value stored in this Ref.public final long getAndAlter(Txn tx, LongFunction function)
TxnLong
getAndAlter
in interface TxnLong
tx
- the Txn
used for this operation.function
- the function that alters the value stored in this Ref.public final long getAndAlter(GammaTxn tx, LongFunction function)
public final boolean atomicCompareAndSet(long expectedValue, long newValue)
TxnLong
atomicCompareAndSet
in interface TxnLong
expectedValue
- the expected value.newValue
- the new value.public final long atomicGetAndIncrement(long amount)
TxnLong
atomicGetAndIncrement
in interface TxnLong
amount
- the amount to increase with.public final long getAndIncrement(long amount)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
getAndIncrement
in interface TxnLong
amount
- the amount to increment with.public final long getAndIncrement(Txn tx, long amount)
TxnLong
getAndIncrement
in interface TxnLong
tx
- the Txn
used for this operation.amount
- the amount to increment with.public final long getAndIncrement(GammaTxn tx, long amount)
public final long atomicIncrementAndGet(long amount)
TxnLong
atomicIncrementAndGet
in interface TxnLong
amount
- the amount to increment with.public final long incrementAndGet(long amount)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
incrementAndGet
in interface TxnLong
amount
- the amount to increment with.public final long incrementAndGet(Txn tx, long amount)
TxnLong
incrementAndGet
in interface TxnLong
tx
- the Txn
used for this operation.amount
- the amount to increment with.public final long incrementAndGet(GammaTxn tx, long amount)
public final void increment()
TxnLong
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 Txn
stored in the TxnThreadLocal
.
public final void increment(Txn tx)
TxnLong
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.
public final void increment(GammaTxn tx)
public final void increment(long amount)
TxnLong
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 Txn
stored in the TxnThreadLocal
.
public final void increment(Txn tx, long amount)
TxnLong
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.
public final void decrement()
TxnLong
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 Txn
stored in the TxnThreadLocal
.
public final void decrement(Txn tx)
TxnLong
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.
public final void decrement(long amount)
TxnLong
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 Txn
stored in the TxnThreadLocal
.
public final void decrement(Txn tx, long amount)
TxnLong
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.
public final void await(long value)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
public final void await(Txn tx, long value)
TxnLong
public final void await(GammaTxn tx, long value)
public final void await(LongPredicate predicate)
TxnLong
This call lifts on the Txn
stored in the TxnThreadLocal
.
public final void await(Txn tx, LongPredicate predicate)
TxnLong
public final void await(GammaTxn tx, LongPredicate predicate)
public final String toDebugString()
TxnObject
toDebugString
in interface TxnObject
public final String toString()
TxnObject
Txn
on the TxnThreadLocal
.public final String toString(Txn tx)
TxnObject
Txn
.public final String atomicToString()
TxnObject
TxnThreadLocal
. The outputted value doesn't need to be consistent from some point
in time, only a best effort is made.atomicToString
in interface TxnObject
Copyright © 2020. All rights reserved.