永发信息网

c# lock 用法

答案:3  悬赏:0  手机版
解决时间 2021-02-15 20:29
c# lock 用法
最佳答案
不摆大理论,理论的大是大非自己去MSDN研读。
lock就是把{}中的代码段锁定,防止多个线程同时运行该代码段。
用法:
private void Do()
{
threat t1=new threat(doSomething);
threat t2=new threat(doSomething);
t1.Start();
t2.Start();
}

object locker=new object();
private void doSomething()

{
...........
.........
lock(locker)
{
FunLog() ;

}
........
}

比如说上面这样,当t1执行到lock时,检测发现locker不在锁定列表中,它会记录locker的内存地址,加入到锁定列表,并开始执行lock的锁定代码段;t2再执行到lock时,检测发现locker的内存地址是在锁定列表中的,于是线程等待;t1执行完FunLog到达lock结尾,将locker地址从锁定列表删除;t2检测发现locer已不在锁定列表中,它会记录locker的内存地址,加入到锁定列表,并进入执行lock的代码段。追问lock(...) 括号里面的内容必须是 object 吗追答lock(...)括号里的内容应该是一种引用类型,C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。

因此
class A
{
}
struct S
{
}
int i;
object o;
string str;
A a=new A();
S s=new S();
lock(i){}//错误
lock(o){}//正确
lock(str){}//正确
lock(a){}//正确
lock(s){}//错误
全部回答
thisLock就是根据这个来锁,如果有线程在操作着{}里面内容,那么thisLock就会被占用,这时候有线程想访问,会排队等待,等前一个访问使用完成后再访问。
private Object thisLock = new Object();
lock (thisLock)
{
FunLog();
}
lock主要用于处理并发问题、锁定独占对象。
锁住当前实例:lock(this)
锁住此类的所有实例:lock(typeof([Type]))
对字符串的锁,会锁定所有相同内容的字符串,建议可以用静态字符串代替
lock关键字比Monitor简洁,其实lock就是对Monitor的Enter和Exit的一个封装
lock是一种比较好用的简单的线程同步方式
public void Function()
{
object lockThis = new object();
lock (lockThis)
{
}
}
还可使用monitor,mutex,ReaderWriterLock
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
炒花生的时候,手被铁锅烫到了,有什么处理方
济源鸿运楼画艺轩知道的求回答!!!
杭州哪里有二手仓储货架出售?旧货交易市场有
冰美人美白1号店地址有知道的么?有点事想过
在保温瓶灌入大半开水后,塞上软木塞,常常会听
学府花园幼儿园地址在什么地方,想过去办事
我的吴姓家族史2000字范文
已知√2≈1.414,√3≈1.732,求3/(2√3)-2√
以毛泽东诗词命名的电视剧或电影有哪些,我需
新华北路在什么地方啊,我要过去处理事情
我用盗版广联达加密锁,计价软件被锁住了,以前
52度茅台镇珍藏原浆值多少钱
请问佛山那个区域比较好
个人做设计类的项目怎样向对方出具发票
那个泰坦龙到底能训吗
推荐资讯
描写动物身体高大的四字词语有哪些
今年顺丰广东到北京邮费 怎么算 一公斤多少
现在有适合十八周岁以下的娱乐场所么
进口尼桑奇骏发动机在加油时发出达达声音
浏阳市长沙驿旅阳光旅馆地址有谁知道?有点事
有谁开过桶装水店 知道的给讲一下都需要什么
倩女幽魂手游暴力射手怎么玩
Servlet中怎么获取response的statusCode
新感觉专业烫染地址有知道的么?有点事想过去
心力衰竭晚期症状是什么?
重庆人文科技学院的毕业证和公办学校的毕业证
(6+x )除以(72+x )等于4分之1。解方程。过
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?