queue lock unlock wait