Class GammaTxnDouble

    • Constructor Detail

      • GammaTxnDouble

        public GammaTxnDouble​(double value)
      • GammaTxnDouble

        public GammaTxnDouble​(GammaTxn tx)
      • GammaTxnDouble

        public GammaTxnDouble​(GammaTxn tx,
                              double value)
      • GammaTxnDouble

        public GammaTxnDouble​(GammaStm stm)
      • GammaTxnDouble

        public GammaTxnDouble​(GammaStm stm,
                              double value)
    • Method Detail

      • get

        public final double get()
        Description copied from interface: TxnDouble
        Gets the value using the provided txn.
        Specified by:
        get in interface TxnDouble
        Returns:
        the current value.
        See Also:
        TxnDouble.atomicGet()
      • get

        public final double get​(Txn tx)
        Description copied from interface: TxnDouble
        Gets the value using the provided txn.
        Specified by:
        get in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        Returns:
        the value stored in the ref.
      • get

        public final double get​(GammaTxn tx)
      • getAndLock

        public final double getAndLock​(LockMode lockMode)
        Description copied from interface: TxnDouble
        Gets 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 Txn stored in the TxnThreadLocal.

        Specified by:
        getAndLock in interface TxnDouble
        Parameters:
        lockMode - the LockMode applied.
        Returns:
        the current value.
        See Also:
        TxnDouble.atomicGet()
      • getAndLock

        public final double getAndLock​(Txn tx,
                                       LockMode lockMode)
        Description copied from interface: TxnDouble
        Gets the value using the provided txn and acquired the lock with the specified LockMode.
        Specified by:
        getAndLock in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        lockMode - the LockMode used
        Returns:
        the value stored in the ref.
      • getAndLock

        public final double getAndLock​(GammaTxn tx,
                                       LockMode lockMode)
      • set

        public final double set​(double value)
        Description copied from interface: TxnDouble
        Sets the new value.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        set in interface TxnDouble
        Parameters:
        value - the new value.
        Returns:
        the new value.
      • set

        public final double set​(Txn tx,
                                double value)
        Description copied from interface: TxnDouble
        Sets the new value using the provided txn.
        Specified by:
        set in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        value - the new value
        Returns:
        the old value
      • set

        public final double set​(GammaTxn tx,
                                double value)
      • setAndLock

        public final double setAndLock​(double value,
                                       LockMode lockMode)
        Description copied from interface: TxnDouble
        Sets the new value and applies the lock.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        setAndLock in interface TxnDouble
        Parameters:
        value - the new value.
        lockMode - the used LockMode.
        Returns:
        the new value.
      • setAndLock

        public final double setAndLock​(Txn tx,
                                       double value,
                                       LockMode lockMode)
        Description copied from interface: TxnDouble
        Sets the new value using the provided txn.
        Specified by:
        setAndLock in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        value - the new value
        lockMode - the lockMode used.
        Returns:
        the old value
      • setAndLock

        public final double setAndLock​(GammaTxn tx,
                                       double value,
                                       LockMode lockMode)
      • getAndSet

        public final double getAndSet​(double value)
        Description copied from interface: TxnDouble
        Sets the value the value and returns the new value.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        getAndSet in interface TxnDouble
        Parameters:
        value - the new value.
        Returns:
        the old value.
      • getAndSet

        public final double getAndSet​(Txn tx,
                                      double value)
        Description copied from interface: TxnDouble
        Sets the value using the provided txn.
        Specified by:
        getAndSet in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        value - the new value.
        Returns:
        the old value.
      • getAndSet

        public final double getAndSet​(GammaTxn tx,
                                      double value)
      • getAndSetAndLock

        public final double getAndSetAndLock​(double value,
                                             LockMode lockMode)
        Description copied from interface: TxnDouble
        Sets the value, acquired the Lock with the specified Lockmode and returns the previous value.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        getAndSetAndLock in interface TxnDouble
        Parameters:
        value - the new value.
        lockMode - the LockMode used.
        Returns:
        the old value.
      • getAndSetAndLock

        public final double getAndSetAndLock​(Txn tx,
                                             double value,
                                             LockMode lockMode)
        Description copied from interface: TxnDouble
        Sets the value and acquired the Lock with the provided LockMode.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        getAndSetAndLock in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        value - the new value.
        lockMode - the LockMode used.
        Returns:
        the old value.
      • getAndSetAndLock

        public final double getAndSetAndLock​(GammaTxn tx,
                                             double value,
                                             LockMode lockMode)
      • atomicGet

        public final double atomicGet()
        Description copied from interface: TxnDouble
        Atomically 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 the TxnDouble.atomicWeakGet().
        Specified by:
        atomicGet in interface TxnDouble
        Returns:
        the current value.
      • atomicWeakGet

        public final double atomicWeakGet()
        Description copied from interface: TxnDouble
        Atomically 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:
        atomicWeakGet in interface TxnDouble
        Returns:
        the value.
      • atomicSet

        public final double atomicSet​(double newValue)
        Description copied from interface: TxnDouble
        Atomically sets the value and returns the new value. This method doesn't care about any running txns.
        Specified by:
        atomicSet in interface TxnDouble
        Parameters:
        newValue - the new value.
        Returns:
        the new value.
      • atomicGetAndSet

        public final double atomicGetAndSet​(double newValue)
        Description copied from interface: TxnDouble
        Atomically sets the value and returns the previous value. This method doesn't care about any running txns.
        Specified by:
        atomicGetAndSet in interface TxnDouble
        Parameters:
        newValue - the new value.
        Returns:
        the old value.
      • commute

        public final void commute​(DoubleFunction function)
        Description copied from interface: TxnDouble
        Applies 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 Txn stored in the TxnThreadLocal.

        Specified by:
        commute in interface TxnDouble
        Parameters:
        function - the function to apply to this reference.
      • commute

        public final void commute​(Txn tx,
                                  DoubleFunction function)
        Description copied from interface: TxnDouble
        Applies 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 Txn stored in the TxnThreadLocal.

        Specified by:
        commute in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        function - the function to apply to this reference.
      • atomicAlterAndGet

        public final double atomicAlterAndGet​(DoubleFunction function)
        Description copied from interface: TxnDouble
        Atomically 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:
        atomicAlterAndGet in interface TxnDouble
        Parameters:
        function - the Function used
        Returns:
        the new value.
      • atomicGetAndAlter

        public final double atomicGetAndAlter​(DoubleFunction function)
        Description copied from interface: TxnDouble
        Atomically 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:
        atomicGetAndAlter in interface TxnDouble
        Parameters:
        function - the Function used
        Returns:
        the old value.
      • alterAndGet

        public final double alterAndGet​(DoubleFunction function)
        Description copied from interface: TxnDouble
        Alters the value stored in this Ref using the provided function and returns the result.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        alterAndGet in interface TxnDouble
        Parameters:
        function - the function that alters the value stored in this Ref.
        Returns:
        the new value.
      • alterAndGet

        public final double alterAndGet​(Txn tx,
                                        DoubleFunction function)
        Description copied from interface: TxnDouble
        Alters the value stored in this Ref using the provided function and lifting on the provided txn.
        Specified by:
        alterAndGet in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        function - the function that alters the value stored in this Ref.
        Returns:
        the new value.
      • getAndAlter

        public final double getAndAlter​(DoubleFunction function)
        Description copied from interface: TxnDouble
        Alters the value stored in this Ref using the provided function amd returns the old value.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        getAndAlter in interface TxnDouble
        Parameters:
        function - the function that alters the value stored in this Ref.
        Returns:
        the old value.
      • getAndAlter

        public final double getAndAlter​(Txn tx,
                                        DoubleFunction function)
        Description copied from interface: TxnDouble
        Alters the value stored in this Ref using the function and returns the old value, using the provided txn.
        Specified by:
        getAndAlter in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        function - the function that alters the value stored in this Ref.
        Returns:
        the old value
      • atomicCompareAndSet

        public final boolean atomicCompareAndSet​(double expectedValue,
                                                 double newValue)
        Description copied from interface: TxnDouble
        Executes a compare and set atomically. This method doesn't care about any running txns.
        Specified by:
        atomicCompareAndSet in interface TxnDouble
        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: TxnDouble
        Increments the value and returns the old value.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        getAndIncrement in interface TxnDouble
        Parameters:
        amount - the amount to increment with.
        Returns:
        the old value.
      • getAndIncrement

        public final double getAndIncrement​(Txn tx,
                                            double amount)
        Description copied from interface: TxnDouble
        Increments the value and returns the old value using the provided txn.
        Specified by:
        getAndIncrement in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        amount - the amount to increment with.
        Returns:
        the old value.
      • getAndIncrement

        public final double getAndIncrement​(GammaTxn tx,
                                            double amount)
      • atomicGetAndIncrement

        public final double atomicGetAndIncrement​(double amount)
        Description copied from interface: TxnDouble
        Atomically increments the value and returns the old value. This method doesn't care about any running txns.
        Specified by:
        atomicGetAndIncrement in interface TxnDouble
        Parameters:
        amount - the amount to increase with.
        Returns:
        the old value.
      • atomicIncrementAndGet

        public final double atomicIncrementAndGet​(double amount)
        Description copied from interface: TxnDouble
        Atomically increments the value and returns the old value. This method doesn't care about any running txns.
        Specified by:
        atomicIncrementAndGet in interface TxnDouble
        Parameters:
        amount - the amount to increment with.
        Returns:
        the new value.
      • incrementAndGet

        public final double incrementAndGet​(double amount)
        Description copied from interface: TxnDouble
        Increments and gets the new value.

        This call lifts on the Txn stored in the TxnThreadLocal.

        Specified by:
        incrementAndGet in interface TxnDouble
        Parameters:
        amount - the amount to increment with.
        Returns:
        the new value.
      • incrementAndGet

        public final double incrementAndGet​(Txn tx,
                                            double amount)
        Description copied from interface: TxnDouble
        Increments and gets the new value using the provided txn.
        Specified by:
        incrementAndGet in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        amount - the amount to increment with.
        Returns:
        the new value.
      • incrementAndGet

        public final double incrementAndGet​(GammaTxn tx,
                                            double amount)
      • await

        public final void await​(double value)
        Description copied from interface: TxnDouble
        Awaits 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 Txn stored in the TxnThreadLocal.

        Specified by:
        await in interface TxnDouble
        Parameters:
        value - the value to wait for.
      • await

        public final void await​(Txn tx,
                                double value)
        Description copied from interface: TxnDouble
        Awaits 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:
        await in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        value - the value to wait for.
      • await

        public final void await​(GammaTxn tx,
                                double value)
      • await

        public final void await​(DoublePredicate predicate)
        Description copied from interface: TxnDouble
        Awaits 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 Txn stored in the TxnThreadLocal.

        Specified by:
        await in interface TxnDouble
        Parameters:
        predicate - the predicate to evaluate.
      • await

        public final void await​(Txn tx,
                                DoublePredicate predicate)
        Description copied from interface: TxnDouble
        Awaits 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:
        await in interface TxnDouble
        Parameters:
        tx - the Txn used for this operation.
        predicate - the predicate to evaluate.
      • toDebugString

        public final String toDebugString()
        Description copied from interface: TxnObject
        Returns 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:
        toDebugString in interface TxnObject
        Returns:
        the debug representation of the TxnObject.
      • toString

        public final String toString​(Txn tx)
        Description copied from interface: TxnObject
        Returns a String representation of the object using the provided Txn.
        Specified by:
        toString in interface TxnObject
        Parameters:
        tx - the Txn used.
        Returns:
        the String representation of the object.
      • atomicToString

        public final String atomicToString()
        Description copied from interface: TxnObject
        Returns a String representation of the object using the provided transaction without looking at a TxnThreadLocal. The outputted value doesn't need to be consistent from some point in time, only a best effort is made.
        Specified by:
        atomicToString in interface TxnObject
        Returns:
        the String representation.