【问题标题】:Using semaphores to sort array使用信号量对数组进行排序
【发布时间】:2012-09-29 02:15:57
【问题描述】:

所以我们有一个任务是在 Java 中使用信号量对数组进行排序。这个任务很简单,我在近几分钟内就解决了,但最后一次合并。

我们的任务是将给定的数组分成两部分,同时对部分进行排序(使用信号量),然后再次合并(使用信号量)。

我的问题是,使用多个线程合并它的目的是什么,因为在填充最终数组时,每个线程都必须不断地相互等待,因为一次只能将元素推送到数组中?

或者我错过了什么? 谢谢。

【问题讨论】:

  • 也许你应该在排序线程完成工作后使用信号量来唤醒一个独特的合并线程。
  • 两个(或多个)线程可以同时工作,你可能需要等待最慢的一个,但它比顺序做所有的事情要快。

标签: java multithreading semaphore


【解决方案1】:

您可以从结果数组的相对两侧与两个不同的线程合并。 每个线程应最多填充结果数组的一半。然后线程可以使用信号量作为“屏障”Implementing an N process barrier using semaphores 来相互等待。

【讨论】:

  • 虽然它是一个正确的答案,因为它有效,但我发现以这种方式解决它完全没有意义,因为“常规”方法会产生类似的效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多