C#中synchronized关键字的用法示例

1949idc 2年前 (2024-09-20) 阅读数 975 #编程语言

在C#中,synchronized 并不是一个关键字。但是,您可以使用 lock 语句来实现类似的功能,确保在同一时间只有一个线程可以访问特定的代码块。

下面是一个使用 lock 语句的示例:

using System;
using System.Threading;

class Program
{
    private static readonly object _lockObject = new object();
    private static int _counter = 0;

    static void Main(string[] args)
    {
        Thread t1 = new Thread(IncrementCounter);
        Thread t2 = new Thread(IncrementCounter);

        t1.Start();
        t2.Start();

        t1.Join();
        t2.Join();

        Console.WriteLine("Counter: " + _counter);
    }

    private static void IncrementCounter()
    {
        for (int i = 0; i < 100000; i++)
        {
            lock (_lockObject)
            {
                _counter++;
            }
        }
    }
}

在这个示例中,我们创建了两个线程 t1t2,它们都会调用 IncrementCounter 方法。IncrementCounter 方法中的 lock 语句确保在同一时间只有一个线程可以访问 _counter++ 代码块。这样可以防止多线程导致的竞态条件,确保 _counter 的值在两个线程完成后正确地增加到200000。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业