您的位置:主页 新闻 行业新闻

lock 关键字在c#中的用法

2019-01-17

lock 对象。主要用于处理并发问题。

目的:解决线程同步访问共享资源的问题
使用大意:lock住一个全局变量,就相当于告诉别的线程,我在使用这个全局变量,请等待。当线程推出lock的作用域时,就释放了对全局变量的锁,其他等待的线程可以访问该资源了。


lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 
lock 语句以关键字 lock 开头,它有一个作为参数的对象,在该参数的后面还有一个一次只能由一个线程执行的代码块。例如:
C# 代码 
public void Function()
{
    System.Object lockThis = new System.Object();
    lock(lockThis)
    {
        // Access thread-sensitive resources.
    }
}


//定义共享资源

object obj=new object();

//线程函数

void threadFun()

{

   lock(obj)

   {

      //安全的访问资源

   }

}


锁住当前实例:lock(this) 
锁住此类的所有实例:lock(typeof([Type])) 
对字符串的锁,会锁定所有相同内容的字符串,建议可以用静态字符串代替 


假设你做了一个页面,上面一按钮,按了按钮以后做以下处理:
在服务器上打开文本文件,读取其中第一行的数字,+1,再写入,关闭文件。
其实就是个计数器哈。
当点的人特别多的时候,就会有上一个人的文件操作还没完成,下一个人又要打开,就会出现文件共享权限错误。
这时你定义一个static object obj;
lock(obj)
执行文件操作
因obj是static,被锁后其他线程无法访问,就会等待解锁,就不会执行文件操作,也不会出错了。、

局域网的打印机每次都要打印一张测试页才能用怎么解决

2020-05-25

打印机首选项的知问题,你到开始——设备和打印机——打印机首选项(对应打印机的首选项)——高级—道—纸张/输出(左边加好打开)——作业识别中,看看作业识别后面带下划专线的文字是不是禁用作属业ID,如果不是单机改掉即可。
MORE

电商中叶子类目

2020-05-25

叶子类目是指无法再细分的类目,如数码电器-3c数码配件-移动电源里的移动电源 ,也就是下面没有子类目的类目。
MORE

拼多多怎么提高留评率

2020-05-25

留评率就是买家收到货之后的留言评论的比率,没有留评意味着没有权重,没有权重就没有销量,来看一下影响留评率的几个因素。1、购买账号问题:拼多多用户正常就是QQ,手机号,微信。这三个的权重也是QQ手机号微信号。所以微信账号是最容易出评价的。2.支付方式问题:拼多…
MORE

扫描二维码分享到微信

在线咨询
联系电话

0311-000-0000