// -------------------------------------------
int main(void) {
dispatch_queue_t queue = dispatch_get_main_queue();
dispatch_sync(queue, ^{ // task 1
NSLog(@"Situation 2");
});
return 0;
}
Ceci est DEAD-LOCK dans le main().
// -------------------------------------------
Pourquoi la situation 1 est-elle OK alors que la situation 2 est DEAD-LOCK? Les deux sont la file d'attente de synchronisation de l'appel dans le thread principal. Ou simplement parce que sync() s'exécute dans la file d'attente principale?
Est-ce à dire, 'int main (void) {NSLog (@" Tâche 1 "); return 0;} ', le' NSLog() 'est exécuté sur la file d'attente principale? Ou toutes les fonctions exécutées dans 'main()' sont exécutées dans la file d'attente principale? – aByn
Tout dans votre programme s'exécute dans la file d'attente principale à l'exception du code que vous envoyez explicitement dans une autre file d'attente. Le code de la file d'attente principale sera toujours exécuté sur le thread principal. Le code distribué sur une autre file d'attente peut ou non s'exécuter sur le thread principal. – Paulw11
Oh, c'est ce que c'est! Thx à @ Paulw11, maintenant je sais les choses. – aByn