es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El `DispatchQueue.global().async` crea una nueva cola global?

DispatchQueue.global().async {
    print("A")
}
DispatchQueue.global().async {
    print("B")
}
DispatchQueue.global().async {
    print("C")
}
DispatchQueue.global().async {
    print("D")
}


let a = DispatchQueue.global()

a.async {
    print("A")
}
a.async {
    print("B")
}
a.async {
    print("C")
}
a.async {
    print("D")
}

Si la cola global no se guarda en una variable, el orden de A, B, C, D cambia en cada ejecución.  
Cuando la cola global se guarda en una variable, A, B, C y D siempre se llaman en secuencia (*en un playground).  

Me pregunto por qué los resultados de la ejecución del código de arriba y abajo son diferentes.  
¿Hay múltiples colas globales?
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Los resultados de ejecución del código de arriba y abajo son diferentes porque cuando la cola global no está almacenada en una variable, se pueden crear múltiples colas globales en diferentes hilos, lo que lleva a que el orden de A, B, C, D sea diferente cada vez. Sin embargo, cuando la cola global se almacena en una variable, se asegura que se use la misma cola global, lo que lleva a que siempre se llame a A, B, C, D en secuencia. Por lo tanto, no hay múltiples colas globales, pero el orden de ejecución depende de cómo se accede y almacena la cola global.

Comments are closed.