社区
C#
帖子详情
lock 语句怎么同时锁定两个变量?
「已注销」
2009-04-15 12:41:30
lock(x)
{
lock(y)
{
dosomething();
}
}
这样的话会不会出什么问题?
有没有什么办法能够直接锁定x 和 y呢? 安全点的。
...全文
307
7
打赏
收藏
lock 语句怎么同时锁定两个变量?
lock(x) { lock(y) { dosomething(); } } 这样的话会不会出什么问题? 有没有什么办法能够直接锁定x 和 y呢? 安全点的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
龙宜坡
2009-04-15
打赏
举报
回复
[Quote=引用 1 楼 kkun_3yue3 的回复:]
定义一个类,把两个变量设计为该类的子成员,然后 锁定类实例
[/Quote]
可行!
烈火蜓蜻
2009-04-15
打赏
举报
回复
怎么锁都不要安全,你可以这样做,直接锁第三第个变量,x,y就不要锁了,应该明白这个意思吧
kkun_3yue3
2009-04-15
打赏
举报
回复
定义一个类,把两个变量设计为该类的子成员,然后 锁定类实例
vwxyzh
2009-04-15
打赏
举报
回复
[Quote=引用 6 楼 dozer47528 的回复:]
怎么样才能 lock一个静态类呢?
[/Quote]
必须lock实例
变通的方法是在静态类上声明一个:
private static readonly object SyncObj = new object;
然后去lock这个SyncObj
「已注销」
2009-04-15
打赏
举报
回复
怎么样才能 lock一个静态类呢?
Sysping1
2009-04-15
打赏
举报
回复
[Quote=引用楼主 dozer47528 的帖子:]
lock(x)
{
dosomething1();
lock(y)
{
dosomething2();
}
}
这样的话会不会出什么问题?
有没有什么办法能够直接锁定x 和 y呢? 安全点的。
[/Quote]
这样锁完全没有问题,是顺序执行的,不会出现交叉执行。
前提是:dosomething1() 及 dosomething2()
是线程安全或都在同一线程中!
「已注销」
2009-04-15
打赏
举报
回复
引用 1 楼 kkun_3yue3 的回复:
定义一个类,把两个变量设计为该类的子成员,然后 锁定类实例
如果是一个 静态类,那怎么办?
显示不能锁定 - -|
一定要用普通的类,然后创建实例吗?
C#之
lock
关键字
lock
锁定
语句
lock
关键字将
语句
块标记为临界区,方法是获取给定对象的互斥锁,执行
语句
,然后释放该锁。下面的示例包含一个
lock
语句
。 class Account { decimal balance; private Object this
Lock
= new Object(); public void
C#使用
lock
锁定
静态
变量
http://bbs.csdn.net/topics/391055599 (一) 如果简写,那么可以写: C# code? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class Store { private static DataTable dt;
VB.NET _sync
lock
语句
Sync
Lock
语句
Sync
Lock
语句
使
语句
得以在表达式上同步,这确保了多个执行线程不会同时执行同一个
语句
。在进入块后,表达式计算一次。进入 Sync
Lock
块时,在指定的表达式上调用 Shared 方法 System.Monitor.Enter,该方法一直阻塞到执行线程在表达式返回的对象上具有独占锁。Sync
Lock
语句
中的表达式类型必须为引用类型。Sync
Lock
块隐式
C#多线程开发:使用
lock
语句
同步多个线程
在多个线程之间共享数据时,需要考虑线程同步问题,必须确保每次只有一个线程访问和改变共享数据。 C#中使用
lock
语句
可以轻松地设置和解除
锁定
以期达到每次只有一个线程访问和改变共享数据的目的。 下面是一个多线程访问共享数据的实例,看看在没有进行同步操作的情况下会出现什么样的问题? [csharp] view plain copy usi
浅谈对C#-
lock
()的理解
C#中的
lock
语句
是怎么回事,有什么作用? C#中的
lock
语句
将
lock
中的
语句
块视为临界区,让多线程访问临界区代码时,必须顺序访问。他的作用是在多线程环境下,确保临界区中的对象只被一个线程操作,防止出现对象被多次改变情况。 注意的地方有:
lock
对象必须是一个不可变对象,否则无法阻止另一个线程进入临界区。最好是privatestatic readonly 或者privatestatic。
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章