📜  C# 使用共享类 - C# (1)

📅  最后修改于: 2023-12-03 14:39:45.231000             🧑  作者: Mango

C# 使用共享类

在C#中,可以使用共享类来实现线程安全的共享数据。下面介绍共享类的概念和使用方法。

共享类的概念

共享类是一种特殊的类,它可以用来存储多个线程使用的共享数据。共享类是线程安全的,因为它的属性和方法都是原子操作,即在执行期间不会被其他线程中断。

可以使用共享类来代替全局变量,避免并发访问问题。共享类中的数据可以被多个线程共享,但是每个线程只能访问自己定义的部分。

使用共享类
  1. 定义共享类

共享类可以使用C#的lock关键字来实现同步。例如,下面是一个共享类的定义:

public class SharedData
{
    private object lockObject = new object();
    private int data;

    public void SetData(int value)
    {
        lock (lockObject)
        {
            data = value;
        }
    }

    public int GetData()
    {
        lock (lockObject)
        {
            return data;
        }
    }
}

在这个示例中,lockObject是一个锁对象,用来保护共享数据的访问。SetData方法和GetData方法都使用了lock关键字来保证线程安全。

  1. 使用共享类

可以把共享类的实例作为参数传递给多个线程,每个线程都可以通过这个共享类实例来访问共享数据。例如:

var sharedData = new SharedData();

Task.Factory.StartNew(() =>
{
    sharedData.SetData(1);
});

Task.Factory.StartNew(() =>
{
    int result = sharedData.GetData();
    Console.WriteLine(result);
});

在这个示例中,首先创建了一个SharedData实例,然后分别启动了两个线程,一个线程调用SetData方法设置共享数据的值,另一个线程调用GetData方法获取共享数据的值。

总结

共享类是一种线程安全的共享数据结构,可以用来代替全局变量,避免并发访问问题。在使用共享类时,要注意使用lock关键字来保护共享数据的访问,确保线程安全。