【问题标题】:Is it safe to call methods AutoResetEvent from different threads?从不同线程调用方法 AutoResetEvent 是否安全?
【发布时间】:2013-01-31 20:53:41
【问题描述】:

从不同的线程调用方法 AutoResetEvent 是否安全? 还是应该避免从不同线程调用对象?

class Test 
{
    EventWaitHandle wh = new AutoResetEvent(false);
    Thread worker = new(Work);

    public Test
    {
        worker.Start();
    }

    public void StopSignal()
    {
        wh.Set(); //<-- Main thread Call
    }

    void Work() 
    {
        wh.WaitOne(); //<-- Child thread call
    }
}

【问题讨论】:

  • 它被设计为在线程之间工作(通信)。如果不安全,WaitHandles 将毫无用处。
  • 你将很难选择正确的答案!

标签: c# multithreading autoresetevent


【解决方案1】:

是的,从不同线程调用方法 AutoResetEvent 是安全的。看看这个link。我希望这能让你清楚。

【讨论】:

    【解决方案2】:

    没关系 - 这就是它的用途!

    请参阅this MSDN 文章了解更多信息。 MSDN 上的大多数类都在底部附近有一个名为“线程安全”的部分,因此如果您不确定将来是否有任何其他类是线程安全的,您可以在那里查看。

    【讨论】:

      【解决方案3】:

      AutoResetEvent 和ManualResetEvent 的重点就是提供不同线程之间的同步!

      详情请参阅This article

      【讨论】:

        猜你喜欢
        • 2018-03-12
        • 1970-01-01
        • 2018-06-30
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 2016-11-22
        • 1970-01-01
        • 2019-06-27
        相关资源
        最近更新 更多