Bash only has "thread local" variables. There are no global variables that can be updated from different threads. All variables/arrays are copied to the subprocesses, and changes in one will not be reflected in another.
The more general answer -- if you had resources that actually could be updated from different processes -- would be to use sem
which comes with GNU parallel.