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();
  • 相关阅读:
    CentOS7修改计算机名!
    kafka原理和实践
    sip协议详解
    MP4视频测试URL地址,亲测有效
    pkill精确匹配进程名称
    gdb break 断点设置
    ZR#996
    CF1217C
    CF1217B
    CF1217A
  • 原文地址:https://www.cnblogs.com/paidaxing/p/4527825.html
Copyright © 2011-2022 走看看