1.概述
功能:为多个线程共享的变量提供原子操作。
| 函数 | 说明 |
| Increment | CompareExchange(ref a, b, c) |
| Decrement | 递减指定变量的值并存储结果。 |
| Add | 添加两个整数并用两者的和替换第一个整数 |
| CompareExchange(ref a, b, c) | 原子操作,a参数和c参数比较, 相等b替换a,不相等不替换。 |
2.代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp5
{
class Program
{
public static int num = 0;
static void Main(string[] args)
{
ParallelLoopResult result = Parallel.For(0, 100, fun);
Console.WriteLine(result.IsCompleted);
Console.WriteLine(num);
Console.ReadKey();
}
static void fun(int a) {
for (int i = 0; i < 100; i++) {
Thread.Sleep(1000);
//num++;
Interlocked.Increment(ref num);
}
}
}
}
3.运行结果

4.未加 Interlocked前的结果

本文介绍了如何利用C#中的Interlocked类来实现线程安全的原子操作,如Increment、Decrement和CompareExchange等,确保在多线程环境下对共享变量的更新不会引发数据竞争问题。通过示例代码展示了Interlocked类在并发编程中的应用,以避免未加锁操作导致的不一致结果。
474





