Articles of gran central despacho

Grupo de subprocesss: DispatchQueue.main.async

Había trabajado en Java, y estaba bastante claro con el trabajo de subprocesss y grupo de subprocesss. Me preguntaba si alguien puede explicar el funcionamiento de cómo se crean los hilos y se asigna espacio en el grupo de hilos de manera rápida. Tambien Dispatch.main.async { // some code } Crea un nuevo subprocess o […]

GCD y subprocesss

Quiero entender algo sobre GCD y Threads. Tengo un bucle for en mi controller de vista que le pide a mi model que realice una request de networking asíncrona. Entonces, si el ciclo se ejecuta 5 veces, el model envía 5 requestes de networking. ¿Es correcto decir que mi model creó 5 subprocesss teniendo en […]

¿Cómo garantiza una protección de resources una queue de envío en serie?

//my_serial_queue is a serial_dispatch_queue dispatch_async(my_serial_queue, ^{ //access a shanetworking resource such as a bank account balance [self changeBankAccountBalance]; }); Si presento 100 tareas que cada usuario accede y cambia el saldo de una count bancaria, entiendo que una queue serie ejecutará cada tarea secuencialmente, pero ¿estas tareas terminan secuencialmente también cuando se usa dispatch_async? ¿Qué […]

Diferencias de GCD en Swift 3

Estaba estudiando Grand Central Dispatch cuando noté que Swift 3 cambió su syntax. Asi es esto: let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) dispatch_async(queue) { () -> Void in let img1 = Downloader.downloadImageWithURL(imageURLs[0]) dispatch_async(dispatch_get_main_queue(), { self.imageView1.image = img1 }) } ¿Algo diferente de este? DispatchQueue.global(qos: .default).async { [weak self] () -> Void in let img1 = Downloader.downloadImageWithURL(imageURLs[0]) […]

UITableView insertRowsAtIndexPaths: WithRowAnimation sin congelar la interfaz de usuario

Intento entender cuál es la mejor práctica para usar cuando trabajo con UITableView con un gran número de filas para insert cuando la tabla está visible. Este es mi comportamiento: Tengo un UITableView y un Thread que intentan insert datos en esta tabla. Creo que hacer que [UITableView reloadData] sea ​​una solución deficiente para el […]

Conceptos IOS multihilo para explorar

Estoy trabajando en una aplicación muy compleja en la que, necesito mejorar el performance. Tengo un gran interés en Multithreading y he estudiado docs de GCD y Blocks. Aunque, he mejorado bastante el performance. Estoy buscando algunas respuestas: Tenemos una queue global en iOS -> cómo verificar qué otras tareas ejecutan o estas están disponibles […]

Use dispatch_async () dentro de un método o al llamar a ese método

Estoy trabajando con algún código que descarga datos. El código está utilizando bloques como devoluciones de llamada. Hay varios methods de descarga con un código muy similar: en el bloque de callback, muestran un UIAlertView si algo sale mal. La vista de alerta siempre se ve así: [req performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { […]

GCD-> bloques-> C ++ -> SQLCipher: La memory Sqlite3MemMalloc no se libera después de completar la tarea

Estoy trabajando en la aplicación de bases de datos y utilizando SQLCipher para el encryption de la database. Estoy utilizando la queue serie GCD para todas las operaciones relacionadas con la database y la gestión manual de la memory. A continuación se muestra un fragment de código para mis operaciones relacionadas con la database. Tengo […]

¿Cómo retrasar la ejecución de un bloque que fue puesto en queue por dispatch_after?

Digamos que quiero ejecutar un bloque de código más tarde, así que llamo a dispatch_after así: double delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ /* code */ }); Pero, ¿qué pasa si quiero "detener" mi progtwig antes de que comenzara la ejecución? Digamos que quiero pausar el progtwig 1 […]

AFNetworking 3.1.0 y grupos de envío

AFHTTPSessionManager GET: … no realiza sus bloques cuando el grupo de envío espera. dispatch_group_wait espera realmente "PARA SIEMPRE". En mi código @ "todo hecho" nunca sucede. ¿Cómo puedo hacer que funcione? (lo siento, como veo, a la mayoría de las personas les interesa saber el motivo para usar los grupos de envío aquí. La razón […]