首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SyncRoot上的SyncLock

SyncRoot上的SyncLock
EN

Stack Overflow用户
提问于 2009-07-13 13:51:16
回答 1查看 936关注 0票数 3

我已经创建了一个同步队列,并在调用入队/出队方法时对该队列的SyncRoot属性使用SyncLock。这些方法是从标准生产者/消费者类的实例调用的。

这是对SyncRoot属性的正确使用吗?

在每个类中创建一个私有共享对象并锁定它是不是更好的做法?

请解释一下你的理由。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-13 13:57:49

是的,这正是SyncRoot属性的用途。特别是,这意味着如果创建另一个“包装器”集合,它可能会使用相同的SyncRoot,因此每个人仍然可以正确地同步。

您可以创建自己的锁对象,这将绝对确保没有其他人同时锁定-但这也意味着其他代码不能安全地使用相同的集合。这真的取决于场景-其他代码是否能够使用相同的集合?其他代码也在你的控制之下吗?

请注意,您应该为所有操作提取锁,而不仅仅是Enqueue/Dequeue。特别是,如果您想要迭代集合,您应该在整个时间内持有锁,因为中间的更改将使迭代器无效。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1119560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档