【问题标题】:What is the name of this synchronisation method?这种同步方法的名称是什么?
【发布时间】:2016-12-14 19:10:14
【问题描述】:

我有一个特殊的编程结构,它允许线程等待,直到另一个线程一次释放所有等待的线程。 每个线程都可以注册自己以等待可由另一个线程触发的外部事件(例如,侦听用户输入的线程)。一旦该事件发生,所有线程都可以继续并立即注销。

我的问题是:这样的结构叫什么?

起初我想到了互斥锁,但据我所知,互斥锁是一种只允许一个线程同时运行的构造(请参阅此链接https://www.quora.com/Semaphore-vs-mutex-vs-monitor-What-are-the-differences)。

对我来说,这个构造听起来像是 java 中的移相器,但我的构造没有计数逻辑,所以我想知道正确的措辞是什么。

【问题讨论】:

  • 它们是等待句柄。您应该指定语言。
  • 这是一种没有人知道的自定义编程语言。

标签: multithreading concurrency synchronization mutex barrier


【解决方案1】:

相关的 Java 和 C# 类中包含“障碍”一词,所以这可能就是您想要的。

【讨论】:

  • 根据javadoc of CyclicBarrier,屏障是一个最多可以等待 n 个线程的构造。一旦等待线程的数量达到配置的数量 n,屏障就会被打破。这不是我所拥有的,因为在我的情况下,必须明确打破“障碍”。
【解决方案2】:

正确答案是:这更像是一个监视器的条件变量。引用Wikipedia:

条件变量本质上是线程容器 等待某个条件。监视器提供了一种机制 线程暂时放弃独占访问以等待 在重新获得独占访问权之前需要满足一些条件 继续他们的任务。

Java 的waitnotifyAll 是一个示例实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2014-11-25
    • 2011-09-14
    相关资源
    最近更新 更多