for stuff in things
do
sem -j+0 ("something; something\
with
with; \
stuff )stuff"
done
sem --wait
This will use semaphores, parallelizing as many iterations as the number of available cores (-j +0 means you will parallelize N+0 jobs, where N is the number of available cores).
sem --wait tells to wait until all the iterations in the for loop have terminated execution before executing the successive lines of code.
Note: you will need "parallel" from the GNU parallel project (sudo apt-get install parallel).