Every call to Obtain using a name will either create a new queue/semaphore or return a reference to the existing q/s. Regardless of which one happens, a small amount of memory is allocated for the reference itself, so if you open multiple references to the same named q/s, each one of those is a small allocation.The q/s will be destroyed when all the references to that q/s are released. *Every* call to Obtain needs a matching Release (unless you rely on the LV behavior that all will be released when the VI goes idle -- not a recommended practice but a safeguard we include just in case). You can have the Obtain and Release both inside the same loop and it works fine assuming you have at least one q/s obtain and release pair outside the loop to keep the queue in existence... otherwise, every call to the Obtain is creating a new queue and every call to Release is destroying it.
This is documented in multiple places in the online help, ni.com and LAVA forums. Search around if you want more details...