c# lock

王朝学院·作者佚名  2016-05-20
窄屏简体版  字體: |||超大  

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

lock用法:

//定义共享资源objectobj=newobject();//线程函数voidthreadFun(){lock(obj){//安全的访问资源}}volatile 关键字:上面说的datatable,在定义的时候加上volatile 关键字可以使每个线程都能得到最新的数据。否则一个线程修改了datatable,其它线程可能还在用没修改的数据。volatileDataTable=newDataTable();

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航