dispatch_sync llamar a una llamada dispatch_async
Tengo algunas dudas sobre el comportamiento de este código:
dispatch_async(queue, ^{
sleep(2);
NSLog(@"step1");
dispatch_sync(queue, ^{
sleep(3);
NSLog(@"step 2");
});
NSLog(@"step 3");
});
De estas filas esperaba obtener como salidastep1 -> step3 -> step2
pero obtengo solostep1
.
Si cambio dispatch_sync con dispatch_async funciona como se esperaba, ¿dispatch_sync en una llamada dispatch_async crea este tipo de problema?
Editar después de las respuestas ----------------
Este caso crea un punto muerto:
Puede verificar la respuesta aceptada para tener una explicación de esta situación y consultar este enlace para obtener documentaciónhttp: //developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/dispatch_async.3.htm