Suppose thread T1 is blocked on acquire() and Thread T2 concurrently calling the same acquire() function then my understanding is that we will get undefined behaviour as per https://en.cppreference.com/w/cpp/thread/counting_semaphore/~counting_semaphore this info. Please let me know is my understanding correct? if this is correct then could anyone tell why this happening?