1、什么是Lock?多线程
Lock——字面上理解就是锁上;锁住;把……锁起来的意思;this
为何要锁?要锁干什么?——回到现实中可想象到,这个卫生间我要上,其余人不要进来!(因此我要锁住门);又或者土味情话所言,我要把你锁在个人内心,而后在里面加个无限循环语句,不给你出来,也不被别人所得,你只能是个人,哈哈哈哈....spa
上面的简单想象,能够获得,咱们之因此要锁,就是由于咱们想独占某个资源(厕所and你的心爱人),或者在须要共用同一个资源的时候(更多的表如今多线程方面)。多线程能够简单的理解为,一个线程看做是一我的,多线程就是多我的在干活,每一个人干每一个人的事,互不干扰,若是你的代码中出现相似(厕所这样的公共资源),你就得加个锁拉!否则多我的上同一个厕所,那画面得.............咳咳咳~总之轻则数据异常,重则软件崩溃。线程
Lock关键字主要是实现多线程同步3d
2、下面提供几个简单的小例子:
下面的例子是根据自身能力给的例子,若有不妥之处,还请各位多多指导!
对象
一、新建一个Window窗体应用程序——略~blog
二、添加一个锁资源
private static object o = new object();同步
三、添加三个按钮button
(1)线程1按钮以及线程方法
软件
按钮1是实现开启线程1;
线程方法:
this.Invoke()是一种托管方法——解决跨线程问题~
(2)线程2按钮
同理
(3)同时执行两个线程的按钮
四、加锁和没加锁区别
(1)加锁效果
(2)不加锁
去掉lock{}部分
线程1和2同时写入了1,数据冲突
五、使用总结:
建锁对象——private static object o = new object();
锁住该锁的地方——lock{};