sync() simply waits till all your spawned threads are finished. If you call spawn n-times on the same proc it´s almost the same as parallel except that parallel does some additionally checks for you. Also you don't need to collect the FLowVars and check manually with ^ (on each FlowVar) (or use sync()) till all threads are finished. To refer to the docu-link of jlp765: if you exit the parallel-block everything is done.
Inside the parallel-block you need to use spawn and tune your degree of parallelism (split your data in n-chunks and process each chunk with a workerthread). I don´t know what happens if you first spawn some threads and then enter a parallel block (and also spawn some threads). Never tried that but it should work.
