I am relatively new to Julia, and I am trying to understand the @sync and @async macro, and how they act when combined with for and while loops.
I wonder if someone could tell me what the difference between these two are, if any?
function do_calculations(e)
# Simulate time it takes to do some calculation
sleep(e.time_to_do_calculations)
end
# Alternative 1
@sync begin
for e in lst
@async begin
while running
do_calculations(e)
end
end
end
end
# Alternative 2
@sync for e in lst
@async while running
do_calculations(e)
end
end
in lst
there is elements that we want to do calculations on using do_calculations(e)
, where each calculation takes some time. However they take different times depending on the element e
. But I want each of the calculations on the different elements to run independently from each other, thus the use of @async
. running
is used to define how long these calculations should be running for.
Thanks in advance!