所以我们有一个任务是在 Java 中使用信号量对数组进行排序。这个任务很简单,我在近几分钟内就解决了,但最后一部分是合并。
我们的任务是将给定的数组分成两部分,同时对部分进行排序(使用信号量),然后再次合并(使用信号量)。
我的问题是,使用多个线程合并它的目的是什么,因为在填充最终数组时,每个人都必须不断地互相等待,因为一次只能将元素推送到数组中?
还是我错过了什么?谢谢。
所以我们有一个任务是在 Java 中使用信号量对数组进行排序。这个任务很简单,我在近几分钟内就解决了,但最后一部分是合并。
我们的任务是将给定的数组分成两部分,同时对部分进行排序(使用信号量),然后再次合并(使用信号量)。
我的问题是,使用多个线程合并它的目的是什么,因为在填充最终数组时,每个人都必须不断地互相等待,因为一次只能将元素推送到数组中?
还是我错过了什么?谢谢。
您可以从结果数组的相对两侧与两个不同的线程合并。每个线程应最多填充结果数组的一半。然后线程可以使用信号量作为“屏障” 使用信号量实现 N 个进程屏障以相互等待。