C# 多线程 lock锁使用

C# 多线程 lock锁使用
用途:锁住并发资源,避免并发问题影响程序正常运行

    static readonly object objSync = new object();
    static long max = 10000000;
    static long _count = 0;

    public void TestLock()
    {
        Thread t1 = new Thread(new ThreadStart(() =>
        {
            for (int i = 0; i < max; i++)
            {
                lock (objSync)
                {
                    _count++;
                }

            }
        }));
        t1.Start();
        for (int i = 0; i < max; i++)
        {
            lock (objSync)//lock锁参数必须是引用类型
            {
                _count++;
            }
        }
        t1.Join();//等待 t1线程执行完毕
        Console.WriteLine("_count结果是:{0}" + _count);
        Console.ReadKey();
    }

C#中对象具有一个同步索引块的属性,默认值为-1,资源被锁住后将同步索引块改为非-1,此时其他程序要使用资源只能等待资源被释放。

C# 多线程 lock锁使用_第1张图片

你可能感兴趣的:(C#,c#,开发语言)