Perguntas com a marcação «grand-central-dispatch»

Grand Central Dispatch (GCD) fornece um mecanismo simples e robusto para operações simultâneas e assíncronas, principalmente em sistemas operacionais Apple (por exemplo, iOS, macOS, watchOS e tvOS), mas também FreeBSD e MidnightBSD.



8
Grand Central Dispatch vs NSOperation
Estou aprendendo sobre programação simultânea para iOS. Até agora eu li sobre NSOperation/NSOperationQueue e GCD. Quais são as razões para usar NSOperationQueuerepetidamente GCDe vice-versa? Soa como ambos GCDe NSOperationQueueabstrai a criação explícita NSThreadsdo usuário. No entanto, a relação entre as duas abordagens não está clara para mim, portanto qualquer feedback …

13
Como escrevo GCD de dispatch_after no Swift 3, 4 e 5?
No Swift 2, pude dispatch_afteradiar uma ação usando o Grand Central Dispatch: 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 }) Mas isso não parece mais compilar desde o Swift 3. Qual é a maneira preferida de escrever isso no Swift moderno?



4
GCD para executar tarefas no thread principal
Eu tenho um retorno de chamada que pode vir de qualquer thread. Quando recebo esse retorno de chamada, gostaria de executar uma determinada tarefa no thread principal. Preciso verificar se já estou no segmento principal - ou há alguma penalidade por não executar essa verificação antes de chamar o código …

6
Como envio dispatch_sync, dispatch_async, dispatch_after etc. no Swift 3, Swift 4 e além?
Eu tenho muito código nos projetos Swift 2.x (ou até 1.x) que se parecem com isso: // 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
No Swift, como chamar o método com parâmetros no thread principal do GCD?
No meu aplicativo, tenho uma função que cria uma NSRURLSession e envia uma NSURLRequest usando sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) No bloco de conclusão desta tarefa, preciso fazer alguns cálculos que adicionem uma UIImage ao viewcontroller de chamada. Eu tenho uma função chamada func displayQRCode(receiveAddr, withAmountInBTC:amountBTC) que faz o cálculo …

10
Aguardando até que dois blocos assíncronos sejam executados antes de iniciar outro bloco
Ao usar o GCD, queremos esperar até que dois blocos assíncronos sejam executados e concluídos antes de passar para as próximas etapas de execução. Qual o melhor jeito pra fazer isso? Tentamos o seguinte, mas parece não 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
Como espero que um bloco despachado de forma assíncrona termine?
Estou testando algum código que faz processamento assíncrono usando o Grand Central Dispatch. O código de teste fica assim: [object runSomeLongOperationAndDo:^{ STAssert… }]; Os testes precisam aguardar a conclusão da operação. Minha solução atual é assim: __block BOOL finished = NO; [object runSomeLongOperationAndDo:^{ STAssert… finished = YES; }]; while (!finished); …



3
Diferença entre dispatch_async e dispatch_sync na fila serial?
Eu criei uma fila serial como esta: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); Qual é a diferença entre dispatch_asyncchamado assim dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); E dispatch_syncchamou assim nesta fila de série? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, ^{ /* …


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.