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

   2024-09-30 4050
核心提示:在C#中,synchronized 并不是一个关键字。但是,您可以使用 lock 语句来实现类似的功能,确保在同一时间只有一个线程可以访问特

在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。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号