不摆大理论,理论的大是大非自己去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){}//错误
下载C# lock 示例源码解析用户还喜欢
- 18480 文章数
- 500万+ 热度
作者专栏
编辑推荐
- 淡抹u2引擎,修复内容较多,物有所值
- 界域传说·经典巨作=传世单机(一键安装)
- 丸子版本(175个传世版本大集合)
- GS版本:神话公益服务端+客户端
- 图片放大工具(放大图片不模糊)
- 剪映无限制VIP版
- 传奇世界客户端下载器,史上最全传世客户端
- 传世GS20220920商业引擎注册+登录配置器 解压密码是1
- U2官方排行榜游戏网关 支持元神,支持传家宝
- GS开战传世客户端+服务端
- (淡漠夕阳)u2引擎合区工具
- 传世GS引擎消除“你的游戏客户端版本号过旧,请及时更新”提示
- 传世一机多区双线路配置器--免密码版本
- 传世凤凰登陆器劫持修复软件
- SQLite3 for Navicat
- 传奇世界npc对话框编辑工具
- 传世GS落霞铭文服务器端
- gs_20210409引擎包+注册机(无限制)
- 传奇世界NPC对话封包查看器[支持时长版和极速版]
- 彩虹引擎传世脚本编辑工具1.7版来了,支持函数脚本翻译
评论