WaitForSingleObject - os threads aguardando formam uma fila?

Se eu definir três encadeamentos para aguardar que um mutex seja liberado, eles formam uma fila com base na ordem em que eles solicitaram ou é um comportamento indefinido (por exemplo, não sabemos qual será o primeiro)?