don't actually need a global mutex, a per-partitioned counter one is fine