Dear @jeff.bezanson and @jameson. Just want to share a success story for the new threading infrastructure (1.3 alpha). The focus in your Juliacon talk seemed to be primary on performance but from my perspective a very important advantage is asynchronous UI programming. In UI programming it is very common to move all work to threads such that the UI remains responsive. This was not really doable until Julia 1.3. The following Gtk example shows what is now possible. One clicks a button and a progress bar is updated regularly, depending on the work done. When running the code with one thread, the entire application freezes. When using more than one thread, everything works as expected.
What is not 100% clear to me is if it is actually allowed to update the UI on the thread. If not one would need to handle over the work to the UI thread somehow. Maybe spawn a task that is scheduled on the main thread.
using Gtk.ShortNames b = Box(:v) win = Window(b,"test") button = Button("do work") push!(b,button) pb = ProgressBar() push!(b,pb) Gtk.showall(win) function doWork() N = 20 for k=1:N set_gtk_property!(pb,:fraction,(k-1)/(N-1) ) sum(collect(1:100000000)) # some heavy work end end signal_connect(button, "clicked") do widget Threads.@spawn doWork() end