I've read through the parallel computing documentation and experimented 
with some toy examples, but I still have some questions about the 
fundamentals of parallel programming in Julia:

   1. It seems that @async performs work in a separate green thread, while 
   @spawn performs work in a separate julia process. Is that right?
   2. Will code executed with several calls to @async actually run on 
   separate cores?
   3. Getting true parallelism with @spawn or @parallel requires launching 
   julia with the -p flag or using addprocs(...). Does the same hold for 
   @async, i.e., will I get true parallelism with several calls to @async if I 
   only have a single julia process?
   4. In what situations should I choose @spawn over @async, and vice versa?
   5. How does scope and serialization work with regards to @async? If the 
   code being executed with @async references some Array, will each thread get 
   a copy of that Array, like if I had called @spawn instead? Or will each 
   thread have access to the same Array, obviating the need for SharedArray 
   when using @async?
   

A lot of this stuff is left ambiguous in the documentation, but I'd be 
happy to submit a pull request with updates if I can get some clear 
answers. Thanks!


-John

Reply via email to