Semaphore functionality implemented using a gen_server