这是怎么得到在Ruby中实现?特别是,产生的线程的结果如何返回到主线程?多线程合并排序
def merge_sort(array)
return array if base_case?(array)
first_half, second_half = split_into_halves(array)
# spawn recursive calls
first_spawn = Thread.new {
sorted_first_half = merge_sort(first_half)
}
second_spawn = Thread.new {
sorted_second_half = merge_sort(second_half)
}
# sync
first_spawn.join
second_spawn.join
merge(sorted_first_half, sorted_second_half)
end
我不知道Ruby,但它似乎最后的语句应该是返回合并(...),或数组=合并(...),然后返回数组。我还假设base_case表示数组大小<2。 – rcgldr
是的,base_case表示array.size <2.我的想法是#join是Ruby尝试合并线程。 Ruby代码的最后一行是自动返回的,@rcgldr – Trajanson
最后的语法看起来很奇怪。没有为merge(...)指定返回数组,为什么它应该返回数组中的结果? merge_sort函数只是返回,不像函数明确返回数组的开始位置。 – rcgldr