Diferencia entre DispatchQueue.main.async y DispatchQueue.main.sync [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Grand Central Dispatch asíncrono vs sincronización 5 respuestas

He estado usando DispatchQueue.main.async desde hace mucho tiempo para realizar algunas operaciones relacionadas con la interfaz de usuario. Pero Swift proporciona DispatchQueue.main.async y DispatchQueue.main.sync y ambos se realizan en la cola principal. Entonces, ¿alguien puede decirme la diferencia entre ellos? ¿Y cuándo debo usarlos? Gracias de antemano.

        DispatchQueue.main.async {
            self.imageView.image = imageView
            self.lbltitle.text = ""

        }
        DispatchQueue.main.sync {
            self.imageView.image = imageView
            self.lbltitle.text = ""

        }

Respuestas a la pregunta(2)

Su respuesta a la pregunta