-
-
Notifications
You must be signed in to change notification settings - Fork 76
Open
Description
Note that
◖◗ Dagger.@spawn single=2 println(myid())
EagerThunk (running)
◖◗ From worker 2: 1
◖◗
◖◗ Dagger.spawn(() -> println(myid()), single=2)
EagerThunk (running)
◖◗ From worker 2: 2
I think what's happening here is that in the former case it is evaluating myid() on process 1 and the function executed on worker 2 is just println(1).
This seems like a problem, it's hard to guess that these examples would be different. I suggest that @spawn should match spawn so that its arguments can be read as if it were the function body passed to spawn. Otherwise I think it will need a lot of documentation.
A stronger argument might be that Distributed.@spawnat already works as I'm suggesting:
◖◗ @spawnat 2 println(myid());
◖◗ From worker 2: 2
(My suggestion is clearly badly breaking at least in principle, so this is tricky.)