Preguntas etiquetadas con grand-central-dispatch

Grand Central Dispatch (GCD) proporciona un mecanismo simple y robusto para operaciones concurrentes y asincrónicas, principalmente en sistemas operativos de Apple (por ejemplo, iOS, macOS, watchOS y tvOS), pero también FreeBSD y MidnightBSD.



8
NSOperation vs Grand Central Dispatch
Estoy aprendiendo sobre programación concurrente para iOS. Hasta ahora he leído sobre NSOperation/NSOperationQueue y GCD. ¿Cuáles son las razones para usar NSOperationQueueover GCDy viceversa? Suena como ambos GCDy NSOperationQueueabstrae la creación explícita NSThreadsdel usuario. Sin embargo, la relación entre los dos enfoques no está clara para mí, por lo que …

13
¿Cómo escribo dispatch_after GCD en Swift 3, 4 y 5?
En Swift 2, pude usar dispatch_afterpara retrasar una acción usando el despacho central magnífico: var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) dispatch_after(dispatchTime, dispatch_get_main_queue(), { // your function here }) Pero esto ya no parece compilarse desde Swift 3. ¿Cuál es la forma preferida de escribir esto en Swift moderno?



4
GCD para realizar la tarea en el hilo principal
Tengo una devolución de llamada que podría provenir de cualquier hilo. Cuando recibo esta devolución de llamada, me gustaría realizar una determinada tarea en el hilo principal. ¿Debo verificar si ya estoy en el hilo principal, o hay alguna penalización por no realizar esta verificación antes de llamar al código …

6
¿Cómo despacho_sync, dispatch_async, dispatch_after, etc. en Swift 3, Swift 4 y más allá?
Tengo un montón de código en proyectos Swift 2.x (o incluso 1.x) que se ve así: // Move to a background thread to do some long running work dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { let image = self.loadOrGenerateAnImage() // Bounce back to the main thread to update the UI dispatch_async(dispatch_get_main_queue()) { self.imageView.image = …

9
En Swift, ¿cómo llamar al método con parámetros en el hilo principal de GCD?
En mi aplicación, tengo una función que hace una NSRURLSession y envía una NSURLRequest usando sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) En el bloque de finalización para esta tarea, necesito hacer algunos cálculos que agreguen un UIImage al controlador de vista de llamada. Tengo un func llamado func displayQRCode(receiveAddr, withAmountInBTC:amountBTC) eso …

10
Esperando hasta que se ejecuten dos bloques asíncronos antes de comenzar otro bloque
Cuando usamos GCD, queremos esperar hasta que se ejecuten y realicen dos bloques asíncronos antes de pasar a los siguientes pasos de ejecución. ¿Cuál es la mejor manera de hacer eso? Intentamos lo siguiente, pero no parece funcionar: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // …

13
¿Cómo espero que termine un bloque despachado asincrónicamente?
Estoy probando un código que realiza un procesamiento asincrónico utilizando Grand Central Dispatch. El código de prueba se ve así: [object runSomeLongOperationAndDo:^{ STAssert… }]; Las pruebas tienen que esperar a que termine la operación. Mi solución actual se ve así: __block BOOL finished = NO; [object runSomeLongOperationAndDo:^{ STAssert… finished = …



3
¿Diferencia entre dispatch_async y dispatch_sync en la cola serial?
He creado una cola en serie como esta: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); ¿Cuál es la diferencia entre dispatch_asyncllamado así dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); ¿Y dispatch_syncllamado así en esta cola serial? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, ^{ …


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.