在锁中使用非静态局部变量有什么意义?

发布于 2024-10-19 07:57:21 字数 210 浏览 0 评论 0原文

有几次我遇到过这段代码,其中类中的局部变量(它不是静态变量)已在锁中使用。

 public class SomeClass
{
    private object obj = new object();
    ....
    ....
    lock(obj)
    {

    }
}

考虑到它是实例变量,是否有任何锁定点?

A couple of times I have came across this code where a local variable in a class ( its NOT a static variable) has been used in a lock.

 public class SomeClass
{
    private object obj = new object();
    ....
    ....
    lock(obj)
    {

    }
}

Is there any point of locking given that its an instance variables?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花开柳相依 2024-10-26 07:57:21

考虑到它是一个实例变量,是否有任何锁定点?

多个线程可以作用于同一个实例,并且需要锁来保证线程安全。例如,考虑一个共享队列。

Is there any point of locking given that its an instance variables?

Multiple threads could be acting on the same instance and a lock is needed for thread-safety. Think, for example, of a shared queue.

无风消散 2024-10-26 07:57:21

静态锁对于控制对静态变量的访问很有用。实例锁对于控制对实例变量的访问很有用。

使用本地锁对象来保护本地变量(除非它是匿名函数或迭代器中捕获的外部变量)完全没有意义,因为其他线程将无法访问锁或变量。

A static lock would be useful for controlling access to a static variable. An instance lock would be useful for controlling access to an instance variable.

There is no point at all in using a local lock object to protect a local variable (unless it is a captured outer variable of an anonymous function or in an iterator), since other threads will not have access to either the lock or the variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文