This is not working, I think the better solution is to go back to one shared producer array. If something is recomputed it can probably safely overwrite the work of another thread.