Использование Interlocked.CompareExchange с классомC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование Interlocked.CompareExchange с классом

Сообщение Anonymous »

Код: Выделить всё

System.Threading.Interlocked.CompareExchangeОператор 
обеспечивает атомарную (таким образом, потокобезопасную) реализацию операции сравнения и замены на языке C#.

Например, int i = 5; Interlocked.CompareExchange(ref i, 10, 5); После этой команды int i будет иметь значение = 10. Кроме того, сравнение и обмен происходят атомарно (одна операция).

Когда я попытался использовать это с экземпляром класса, сравнение завершилось неудачей и значения не обменялись.

Код: Выделить всё

   public class X
{
public int y;
public X(int val) { y = val; }
}
Теперь, когда я это сделаю

Код: Выделить всё

    X a = new X(1);
X b = new X(1);
X c = new X(2);
Interlocked.CompareExchange(ref a, c, b);
Операция сравнения и обмена завершается с ошибкой. Итак, я переопределил операторы Equals и == для класса X как

Код: Выделить всё

    public override bool Equals(object obj) { return y == ((X) obj).y; }
Итак, теперь я получаю Interlocked.Equals(a,b) как true, но операции CompareExchange по-прежнему не выполняются.

Есть ли какой-нибудь способ сделать это? Я хочу сравнить два экземпляра класса и присвоить одному из них значение на основе сравнения.

Подробнее здесь: https://stackoverflow.com/questions/669 ... th-a-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Должен ли Interlocked.comPareExchange также нестабильная переменная?
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Ошибка связи между классом SQLite и классом SQL Server в Android Java
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Ошибка связи между классом SQLite и классом SQL Server в Android Java
    Anonymous » » в форуме Android
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Ошибка связи между классом SQLite и классом SQL Server в Android Java
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Ошибка связи между классом SQLite и классом SQL Server в Android Java
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»