Разве вы не можете просто увеличить целое число и вернуть его с соответствующим валютным контролем.Если кто-то освобождает целое число, сохраните его в другой отсортированной структуре данных и верните его.Если список возвращенных целых чисел пуст, то ваш возврат прост: чтение, увеличение, запись, возврат.Если список возвращенных целых чисел не пуст, тогда просто прочитайте, верните и удалите первый int из списка возвращенных целых чисел