标签:加锁 Lock object 关键字 例子 线程 按钮 多线程
一、什么是Lock?
Lock——字面上理解就是锁上;锁住;把……锁起来的意思;
为什么要锁?要锁干什么?——回到现实中可想象到,这个卫生间我要上,其他人不要进来!(所以我要锁住门);又或者土味情话所言,我要把你锁在我的心里,然后在里面加个无限循环语句,不给你出来,也不被别人所得,你只能是我的,哈哈哈哈....
上面的简单想象,可以得到,我们之所以要锁,就是因为我们想独占某个资源(厕所and你的心爱人),或者在需要共用同一个资源的时候(更多的表现在多线程方面)。多线程可以简单的理解为,一个线程看作是一个人,多线程就是多个人在干活,每个人干每个人的事,互不干扰,如果你的代码中出现类似(厕所这样的公共资源),你就得加个锁拉!不然多个人上同一个厕所,那画面得.............咳咳咳~总之轻则数据异常,重则软件崩溃。
Lock关键字主要是实现多线程同步
二、下面提供几个简单的小例子:
下面的例子是根据自身能力给的例子,如有不妥之处,还请各位多多指导!
1、新建一个Window窗体应用程序——略~
2、添加一个锁
private static object o = new object();
3、添加三个按钮button
(1)线程1按钮以及线程方法
按钮1是实现开启线程1;
线程方法:
this.Invoke()是一种托管方法——解决跨线程问题~
(2)线程2按钮
同理
(3)同时执行两个线程的按钮
4、加锁和没加锁区别
(1)加锁效果
(2)不加锁
去掉lock{}部分
线程1和2同时写入了1,数据冲突
5、使用总结:
建锁对象——private static object o = new object();
锁住该锁的地方——lock{};
标签:加锁,Lock,object,关键字,例子,线程,按钮,多线程 来源: https://www.cnblogs.com/Linxm51649/p/12187703.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。