Check if unbalanced is empty before processing, avoiding extra check every loop
Lock balance_pool() and return immediately if unable to obtain. No need to parallelize this.