Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# interlocked

作者:此甥孓狠善良   发布日期:2025-05-23   浏览:36

using System;

class Program
{
    static void Main()
    {
        int value = 0;

        // 使用 Interlocked.Increment 来确保线程安全地增加 value 的值
        Interlocked.Increment(ref value);
        Console.WriteLine($"Incremented value: {value}");

        // 使用 Interlocked.Add 来确保线程安全地增加 value 的值
        Interlocked.Add(ref value, 5);
        Console.WriteLine($"Added value: {value}");

        // 使用 Interlocked.Exchange 来确保线程安全地交换 value 的值
        int oldValue = Interlocked.Exchange(ref value, 10);
        Console.WriteLine($"Exchanged old value: {oldValue}, new value: {value}");

        // 使用 Interlocked.CompareExchange 来确保线程安全地条件交换 value 的值
        int expected = 10;
        int newValue = 20;
        int result = Interlocked.CompareExchange(ref value, newValue, expected);
        Console.WriteLine($"CompareExchange result: {result}, new value: {value}");
    }
}

解释说明

Interlocked 类提供了一组静态方法,用于对多个线程共享的变量执行原子操作。这些方法可以确保在多线程环境下,对变量的操作是线程安全的。

  • Interlocked.Increment(ref int location): 对指定位置的整数值进行原子递增操作。
  • Interlocked.Add(ref int location, int value): 对指定位置的整数值进行原子加法操作。
  • Interlocked.Exchange(ref int location, int value): 对指定位置的整数值进行原子交换操作,返回旧值。
  • Interlocked.CompareExchange(ref int location, int value, int comparand): 对指定位置的整数值进行原子比较和交换操作,只有当当前位置的值等于给定的比较值时,才会用新值替换当前位置的值,并返回旧值。

这些方法确保了在多线程环境中,对共享变量的操作不会发生竞争条件(race condition),从而保证了程序的正确性。

上一篇:c# mongodb

下一篇:c# 开发

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

.net和c#

c#游戏开发

c#网络编程

c# rectangle

c# if else

c# rtsp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站