Julia 异步块:无法通过命令提示符获得任何结果

Julia async block: couldn't get any result with command prompt

我正在使用 Julia,我的 IDE 是 Juno,系统是 Linux。

这是我的脚本:

#test.jl
function testShow(msg)
  println(msg)
end

#@async begin      # 1
  testShow("aaa")
#end               # 2

println("bbb")

如果我在Juno中运行,我可以得到如下结果:

aaa
bbb

如果我删除注释 #1 和 #2,这意味着 testShow("aaa")async 块中,而 运行 在 Juno 中,我可以在下面得到另一个结果:

bbb
aaa

现在,我需要用命令行运行它。所以我打开一个终端并输入以下命令:

julia /home/myname/Julia/test.jl

如果 #1 和 #2 被评论,我可以得到预期的结果:

aaa
bbb

但是,如果我去掉这两条评论,我会得到这样的结果:

bbb

为什么? @async 块中的代码不能用命令行执行?

您需要等待 @async 任务完成,您没有在命令行上看到输出,因为程序在任务完成之前就退出了。一种方法是捕获 @async 返回的任务并在退出程序之前等待任务。

function testShow(msg)
    println(msg)
end

t = @async begin
    testShow("aaa")
end

println("bbb")
wait(t)