要异步地执行多项工作(主要是排序向量和函数计算,其中计算受制于计算或内存,目前我可以按以下方式编写这些操作:
- 使用
Threads.@spawn
_f1 = Threads.@spawn f1(x)
_f2 = Threads.@spawn f2(x)
_f3 = Threads.@spawn f3(x)
y1 = fetch(_f1)
y2 = fetch(_f2)
y3 = fetch(_f3)
还有一种更简洁的模式:
@sync begin
@async y1 = f1(x)
@async y2 = f2(x)
@async y3 = f3(x)
end
针对这种特定的使用情况,哪一个更受推荐?
Threads.@spawn
中使用@sync
。 - fredrikekre