zoukankan      html  css  js  c++  java
  • c# lock

    之前学习多线程的时候,始终不能明白lock到底有毛线用。直到最近做了一个项目,里面有很多的线程,但是呢,这些线程都会用到同一个datatable,而且会改变这个table中的内容。当时我就想啊,这几个线程都要改这张表。会不会遇到同时在改这个表里面某一行的情况。后来我机智的给每个线程都复制一张table。心想,这下大家各自改各自的,就可以啦。但是呢,就会导致每个线程都要改同样的数据啊,会非常浪费时间!直到此刻才明白,lock是多么好的朋友,它可以在一个线程修改表的时候,其他线程都不能改这张表。很有用的样子~

    lock用法:

    //定义共享资源
    object obj=new object();
     
    //线程函数
    void threadFun()
    {
       lock(obj)
       {
          //安全的访问资源
       }
    }
    volatile 关键字:
    上面说的datatable,在定义的时候加上volatile 关键字可以使每个线程都能得到最新的数据。否则一个线程修改了datatable,其它线程可能还在用没修改的数据。
    volatile DataTable=new DataTable();
  • 相关阅读:
    所有者权益
    金融工具
    或有事项
    股份支付
    借款费用
    Keycode对照表
    js(jQuery)获取时间搜集
    jQuery实现CheckBox全选、全不选
    JS 截取字符串函数
    jQuery mouseenter与mouseleave
  • 原文地址:https://www.cnblogs.com/paidaxing/p/4527825.html
Copyright © 2011-2022 走看看