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

时间:2015-12-01 18:22:55

标签: asynchronous command-line command-prompt julia

我正在与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块中的代码不能用命令行执行?

1 个答案:

答案 0 :(得分:3)

您需要等待@async任务完成,您没有在命令行上看到输出,因为程序在任务完成之前退出。一种方法是捕获function testShow(msg) println(msg) end t = @async begin testShow("aaa") end println("bbb") wait(t) 返回的任务,并在退出程序之前等待任务。

<ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Image Source="{Binding MapTileImage}" Stretch="Fill" Width="{Binding Width}" Height="{Binding Height}">                               

                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="MouseEnter">
                                    <command:EventToCommand Command="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.ChangeTilesCommand}" CommandParameter="{Binding .}" />
                                </i:EventTrigger>
                                <i:EventTrigger EventName="MouseLeftButtonDown">
                                    <command:EventToCommand Command="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.DrawingCommand}" PassEventArgsToCommand="True"/>
                                    <command:EventToCommand Command="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.ChangeTilesCommand}" CommandParameter="{Binding .}"/>
                                </i:EventTrigger>
                                <i:EventTrigger EventName="MouseLeftButtonUp">
                                    <command:EventToCommand Command="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.DrawingCommand}" PassEventArgsToCommand="True"/>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                        </Image>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>