2015-09-14 1 views
0

Je ne pouvais pas deviner la sortie de celui-ci.dispatch_Async série file d'attente

dispatch_async(serial_queue,^{NSlog(@"1");}); 

NSlog(@"2"); 

dispatch_async(serial_queue,^{NSlog(@"3");}); 

NSlog(@"4"); 

AFAIK

La sortie est

Mais je ne suis pas sûr!

Quelqu'un peut-il expliquer Si je me trompe!

+0

la sortie devrait être théoriquement imprévisible, car il n'y a aucune garantie lorsque les blocs async exécuteront ... mais je pense que peut-être ces blocs async s'exécutent trop rapidement pour que l'ordre soit différent – Fonix

+0

Il devrait y avoir une réponse juste! parce que la question m'a été jetée dans un test d'entrevue écrit iOS – NaveenKumar

Répondre

1

Bien que l'entrelacement des opérations puisse ne pas être connu, vous pouvez voir qu'il existe deux flux. Le premier est la journalisation à partir d'une file d'attente en série, l'autre est juste NSLog simple.

Qu'est-ce que vous pouvez dire au sujet de l'ordre est que 1 précédera 3 et 2 précédera 4