-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
macro broadcast(ex)
quote
for p in workers()
@defineat p $(ex)
end
end
endused to be
macro broadcast(ex)
quote
@sync for p in workers()
@async @defineat p $(ex)
end
end
endbut now that has an issue with let. The expanded codes:
quote
#= C:\Users\Chris\.julia\dev\ParallelDataTransfer\src\ParallelDataTransfer.jl:70 =#
begin
#= task.jl:243 =#
let ParallelDataTransfer.:(##sync#72) = (Base.Any)[]
#= task.jl:244 =#
#36#v = for #35#p = (ParallelDataTransfer.workers)()
#= C:\Users\Chris\.julia\dev\ParallelDataTransfer\src\ParallelDataTransfer.jl:71 =#
begin
#= task.jl:262 =#
local #37#task = (Base.Task)((()->begin
#= task.jl:259 =#
begin
#= C:\Users\Chris\.julia\dev\ParallelDataTransfer\src\ParallelDataTransfer.jl:27 =#
(ParallelDataTransfer.remotecall_wait)(#35#p, Main, $(QuoteNode(:(x = 6)))) do #38#mod, #39#ex
#= C:\Users\Chris\.julia\dev\ParallelDataTransfer\src\ParallelDataTransfer.jl:28 =#
(ParallelDataTransfer.Core).eval(#38#mod, #39#ex)
end
end
end))
#= task.jl:263 =#
if $(Expr(:isdefined, :(ParallelDataTransfer.:(##sync#72))))
#= task.jl:264 =#
(Base.push!)(ParallelDataTransfer.:(##sync#72), #37#task)
end
#= task.jl:266 =#
(Base.schedule)(#37#task)
end
end
#= task.jl:245 =#
(Base.sync_end)(ParallelDataTransfer.:(##sync#72))
#= task.jl:246 =#
#36#v
end
end
endquote
#= task.jl:243 =#
let ##sync#72 = (Base.Any)[]
#= task.jl:244 =#
#45#v = for p = workers()
#= C:\Users\Chris\.julia\dev\ParallelDataTransfer\test\runtests.jl:53 =#
begin
#= task.jl:262 =#
local #46#task = (Base.Task)((()->begin
#= task.jl:259 =#
begin
#= C:\Users\Chris\.julia\dev\ParallelDataTransfer\src\ParallelDataTransfer.jl:27 =#
(ParallelDataTransfer.remotecall_wait)(p, Main, $(QuoteNode(:($(Expr(:$, :ex)))))) do #47#mod, #48#ex
#= C:\Users\Chris\.julia\dev\ParallelDataTransfer\src\ParallelDataTransfer.jl:28 =#
(ParallelDataTransfer.Core).eval(#47#mod, #48#ex)
end
end
end))
#= task.jl:263 =#
if $(Expr(:isdefined, Symbol("##sync#72")))
#= task.jl:264 =#
(Base.push!)(##sync#72, #46#task)
end
#= task.jl:266 =#
(Base.schedule)(#46#task)
end
end
#= task.jl:245 =#
(Base.sync_end)(##sync#72)
#= task.jl:246 =#
#45#v
end
endI think it's because let ParallelDataTransfer.:(##sync#72) = (Base.Any)[] might not be allowed, which means that using @sync in a package's macro is always an issue?
Metadata
Metadata
Assignees
Labels
No labels