zoukankan      html  css  js  c++  java
  • lock,Interlocked

    关键字:
          lock:软件锁,防止多线程访问同一段代码。
          Interlocked:为多个线程共享的变量提供原子操作。

    当需要多个线程执行执行同一段代码,有可能发生同时访问的情况,这时就有可能发生冲突。
    为了避免发生冲突,VS.Net里使用了软件锁(lock)。
    通过软件锁,在同一个时刻,只允许一个线程访问该段代码。
    其他线程如果也在这个时刻访问该段代码的话,将会被系统置为睡眠状态。
    只有第一个访问线程结束对这段代码的访问之后,才会唤醒第二个访问线程。
    依次类推。

    用法
    public static int s_CallCount = 0;
    public void SetCallCount()
    {
        lock(this)//这里是锁定整个对象的意思
        {
            s_CallCount ++;
        }
    }

    private ArrayList m_Pages = new ArrayList();
    public void SetCallCount(DataTable pPage)
    {
        lock(this.m_Pages)//这里是锁定数组列表对象的意思
        {
            this.m_Pages.Add(pPage);
        }
    }



    lock(object)
    这里的object可以是arraylist,class等引用对象。

    如果是数值对象,最好追加修饰符(private static)进行设定。

    对于多线程共享数值,可以使用Interlocked类来出来读取或者自动加一,减一等。
  • 相关阅读:
    继承
    面向对象
    数据库的数据操作
    数据库数据类型以及建库语句
    第一天
    继承与多态
    C#面向对象——对象成员、方法重载、引用类库等
    C#面向对象初步
    SQL2008知识回顾
    C#知识回顾
  • 原文地址:https://www.cnblogs.com/si812cn/p/1222890.html
Copyright © 2011-2022 走看看