Table of Contents

Method ConditionSetBits

Namespace
KZDev.PerfUtils
Assembly
KZDev.PerfUtils.dll

ConditionSetBits(ref int, Predicate<int>, int)

A thread-safe method to conditionally set a specific set of bits in a variable.

public static (int originalValue, int newValue) ConditionSetBits(ref int location1, Predicate<int> condition, int setBitsValue)

Parameters

location1 int

A variable containing the bits to set. The result is stored in this variable.

condition Predicate<int>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

setBitsValue int

The value that holds the bits to set and store in location1 If the condition is not met, the original value is returned in both fields.

Returns

(int originalValue, int newValue)

A tuple containing the original value and the new value after the operation.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr(ref int, Predicate<int>, int)

This method uses a Predicate<T> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.

ConditionSetBits<T>(ref int, Func<int, T, bool>, T, int)

A thread-safe method to conditionally set a specific set of bits in a variable with the condition based on a function that takes the current value and an argument.

public static (int originalValue, int newValue) ConditionSetBits<T>(ref int location1, Func<int, T, bool> condition, T argument, int setBitsValue)

Parameters

location1 int

A variable containing the bits to set. The result is stored in this variable.

condition Func<int, T, bool>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

argument T

The argument to pass to the condition function condition

setBitsValue int

The value that holds the bits to set and store in location1 If the condition is not met, the original value is returned in both fields.

Returns

(int originalValue, int newValue)

A tuple containing the original value and the new value after the operation.

Type Parameters

T

The type of the argument to pass to the condition function.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr<T>(ref int, Func<int, T, bool>, T, int)

This method uses a Func<T1, T2, TResult> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.

ConditionSetBits(ref uint, Predicate<uint>, uint)

A thread-safe method to conditionally set a specific set of bits in a variable.

public static (uint originalValue, uint newValue) ConditionSetBits(ref uint location1, Predicate<uint> condition, uint setBitsValue)

Parameters

location1 uint

A variable containing the bits to set. The result is stored in this variable.

condition Predicate<uint>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

setBitsValue uint

The value that holds the bits to set and store in location1 If the condition is not met, the original value is returned in both fields.

Returns

(uint originalValue, uint newValue)

A tuple containing the original value and the new value after the operation.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr(ref uint, Predicate<uint>, uint)

This method uses a Predicate<T> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.

ConditionSetBits<T>(ref uint, Func<uint, T, bool>, T, uint)

A thread-safe method to conditionally set a specific set of bits in a variable with the condition based on a function that takes the current value and an argument.

public static (uint originalValue, uint newValue) ConditionSetBits<T>(ref uint location1, Func<uint, T, bool> condition, T argument, uint setBitsValue)

Parameters

location1 uint

A variable containing the bits to set. The result is stored in this variable.

condition Func<uint, T, bool>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

argument T

The argument to pass to the condition function condition

setBitsValue uint

The value that holds the bits to set and store in location1 If the condition is not met, the original value is returned in both fields.

Returns

(uint originalValue, uint newValue)

A tuple containing the original value and the new value after the operation.

Type Parameters

T

The type of the argument to pass to the condition function.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr<T>(ref uint, Func<uint, T, bool>, T, uint)

This method uses a Func<T1, T2, TResult> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.

ConditionSetBits(ref long, Predicate<long>, long)

A thread-safe method to conditionally set a specific set of bits in a variable.

public static (long originalValue, long newValue) ConditionSetBits(ref long location1, Predicate<long> condition, long setBitsValue)

Parameters

location1 long

A variable containing the bits to set. The result is stored in this variable.

condition Predicate<long>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

setBitsValue long

The value that holds the bits to set and store in location1

Returns

(long originalValue, long newValue)

A tuple containing the original value and the new value after the operation. If the condition is not met, the original value is returned in both fields.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr(ref long, Predicate<long>, long)

This method uses a Predicate<T> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.

ConditionSetBits<T>(ref long, Func<long, T, bool>, T, long)

A thread-safe method to conditionally set a specific set of bits in a variable with the condition based on a function that takes the current value and an argument.

public static (long originalValue, long newValue) ConditionSetBits<T>(ref long location1, Func<long, T, bool> condition, T argument, long setBitsValue)

Parameters

location1 long

A variable containing the bits to set. The result is stored in this variable.

condition Func<long, T, bool>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

argument T

The argument to pass to the condition function condition

setBitsValue long

The value that holds the bits to set and store in location1

Returns

(long originalValue, long newValue)

A tuple containing the original value and the new value after the operation. If the condition is not met, the original value is returned in both fields.

Type Parameters

T

The type of the argument to pass to the condition function.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr<T>(ref long, Func<long, T, bool>, T, long)

This method uses a Func<T1, T2, TResult> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.

ConditionSetBits(ref ulong, Predicate<ulong>, ulong)

A thread-safe method to conditionally set a specific set of bits in a variable.

public static (ulong originalValue, ulong newValue) ConditionSetBits(ref ulong location1, Predicate<ulong> condition, ulong setBitsValue)

Parameters

location1 ulong

A variable containing the bits to set. The result is stored in this variable.

condition Predicate<ulong>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

setBitsValue ulong

The value that holds the bits to set and store in location1

Returns

(ulong originalValue, ulong newValue)

A tuple containing the original value and the new value after the operation. If the condition is not met, the original value is returned in both fields.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr(ref ulong, Predicate<ulong>, ulong)

This method uses a Predicate<T> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.

ConditionSetBits<T>(ref ulong, Func<ulong, T, bool>, T, ulong)

A thread-safe method to conditionally set a specific set of bits in a variable with the condition based on a function that takes the current value and an argument.

public static (ulong originalValue, ulong newValue) ConditionSetBits<T>(ref ulong location1, Func<ulong, T, bool> condition, T argument, ulong setBitsValue)

Parameters

location1 ulong

A variable containing the bits to set. The result is stored in this variable.

condition Func<ulong, T, bool>

The condition that must be met for the operation to proceed. The delegate takes the current value of location1 as an argument.

argument T

The argument to pass to the condition function condition

setBitsValue ulong

The value that holds the bits to set and store in location1

Returns

(ulong originalValue, ulong newValue)

A tuple containing the original value and the new value after the operation. If the condition is not met, the original value is returned in both fields.

Type Parameters

T

The type of the argument to pass to the condition function.

Remarks

This method is a convenience method that is a semantic alias for ConditionOr<T>(ref ulong, Func<ulong, T, bool>, T, ulong)

This method uses a Func<T1, T2, TResult> to determine if the operation should proceed based on the current value of location1. If condition returns true, then the XOR result is stored in location1 if the current value is the same as the value passed to the condition. If the value has changed in the time between being read, and processed by condition, the operation is repeated until either the condition is not met, or the operation is successful.

This means that if another thread changes the value of location1 between when it is read, and when the condition is processed, the condition could be called multiple times before the operation is successful.