ho qualche dubbio sul comportamento di questo codice:dispatch_sync chiamata in una chiamata dispatch_async
dispatch_async(queue, ^{
sleep(2);
NSLog(@"step1");
dispatch_sync(queue, ^{
sleep(3);
NSLog(@"step 2");
});
NSLog(@"step 3");
});
Da queste righe mi aspettavo di ottenere come output step1 -> step3 -> step2
ma ottengo solo step1
.
Se cambio dispatch_sync con dispatch_async, funziona come previsto, Dispatch_sync in una chiamata dispatch_async crea questo tipo di problema?
Modifica dopo risposte ----------------
questo caso creare una situazione di stallo:
È possibile controllare risposta accettato di avere una spiegazione di questa situazione e controllare questo collegamento per la documentazione http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/dispatch_async.3.html