同步功能

发布于 2024-09-01 16:11:59 字数 46 浏览 4 评论 0原文

我如何在 C# 中做到我的函数将受到互斥信号量(JAVA 中的同步函数)的保护

how can i do in C# that my function will be guarded by mutex semaphore a.k.a synchronize function in JAVA

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

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

发布评论

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

评论(4

夜声 2024-09-08 16:11:59

除了自己做之外,没有什么好的方法可以做到这一点:

private readonly object _locker = new object();

public void MyMethod()
{
    lock (_locker) {
        // Do something
    }
}

There's no good way to do this, except to do it yourself:

private readonly object _locker = new object();

public void MyMethod()
{
    lock (_locker) {
        // Do something
    }
}
饮惑 2024-09-08 16:11:59

您不需要像 Java 这样的同步函数 - 它们是一个坏主意,因为它们使用其他可能干扰的锁结构。你想要的是一个锁对象。基本上,在您想要保护的类中,创建一个对象类型的私有成员变量,

private readonly object lock_ = new object();

然后在您需要同步的任何方法中,使用锁构造自动进入和离开锁:-

public void SomeMethod()
{
    lock(lock_)
    {
         // ...... Do Stuff .........
    }
}

You don't want synchronize functions like Java - they're a bad idea because they use a lock construct which other can interfere with. What you want is a lock object. Basically, in the class you want to protect, create a private member variable of type object

private readonly object lock_ = new object();

Then in any method you need to synchronize, use the lock construct to enter and leave the lock automatically:-

public void SomeMethod()
{
    lock(lock_)
    {
         // ...... Do Stuff .........
    }
}
戏剧牡丹亭 2024-09-08 16:11:59

正如John所说,你可以使用lock(),这与Monitor.Enter和Monitor.Exit是一样的。如果需要跨进程互斥体,请使用 Mutex 类。

As John said, you can use lock (), which is the same thing as Monitor.Enter and Monitor.Exit. If you need a cross-process mutex, use the Mutex class.

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