Semaphore with permit id?

I’d like to use a Semaphore like object with say four permits, where a call to acquire would tell me which of the four permits was assigned and a call to release would release that specific permit. I understand that Semaphore just keeps a tally. What would be the easiest way of achieving this, preferably without using any third party packages? Thanks!!

Well, there is now. See