«grand-central-dispatch» etiketlenmiş sorular

Grand Central Dispatch (GCD), öncelikle Apple işletim sistemlerinde (örneğin, iOS, macOS, watchOS ve tvOS) ve ayrıca FreeBSD ve MidnightBSD'de eşzamanlı ve eşzamansız işlemler için basit ve sağlam bir mekanizma sağlar.



8
NSOperation vs Grand Central Dispatch
İOS için eşzamanlı programlama hakkında bilgi ediniyorum. Şimdiye kadar okudum NSOperation/NSOperationQueue ve GCD. Aşırı veya tersini kullanmanın nedenleri nelerdir ?NSOperationQueueGCD İkisi gibi Sesler GCDve NSOperationQueueuzak soyut açık yaratma NSThreadskullanıcısından. Ancak iki yaklaşım arasındaki ilişki benim için net değil, bu yüzden takdir edilecek herhangi bir geri bildirim!

13
Swift 3, 4 ve 5'te dispatch_after GCD'yi nasıl yazarım?
Swift 2'de, dispatch_afterbüyük merkezi sevkıyat kullanarak bir eylemi geciktirmek için kullanabildim : 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 }) Fakat bu artık Swift 3'ten beri derlenmiyor gibi görünüyor. Bunu modern Swift'te yazmanın tercih edilen yolu nedir?



4
Ana iş parçacığında görev yapmak için GCD
Herhangi bir iş parçacığından gelebilir bir geri arama var. Bu geri aramayı aldığımda, ana iş parçacığında belirli bir görevi gerçekleştirmek istiyorum. Zaten ana iş parçacığı üzerinde olup olmadığımı kontrol etmek gerekiyor mu - ya da aşağıdaki kodu çağırarak bu kontrolü yapmadan herhangi bir ceza var mı? dispatch_async(dispatch_get_main_queue(), ^{ // do …

6
Swift 3, Swift 4 ve ötesinde nasıl_satchc, dispatch_async, dispatch_after, vb. Gönderirim?
Swift 2.x (hatta 1.x) projelerinde şöyle görünen bir sürü kod var: // 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 = image } } Veya yürütmeyi …

9
Swift GCD ana iş parçacığı üzerinde parametreleri ile yöntemi nasıl çağırılır?
Benim app NSRURLSession yapar ve kullanarak bir NSURLRequest gönderir bir işlevi var sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) Bu görevin tamamlama bloğunda, çağıran viewcontroller'a bir UIImage ekleyen bazı hesaplamalar yapmam gerekiyor. Adlı bir fonkum var func displayQRCode(receiveAddr, withAmountInBTC:amountBTC) UIImage ekleme hesaplaması yapar. Görünüm ekleme kodunu tamamlama bloğunun içinde çalıştırmayı denersem, Xcode …

10
Başka bir bloğa başlamadan önce iki eşzamansız blok yürütülmesini beklemek
GCD kullanırken, sonraki yürütme adımlarına geçmeden önce iki eşzamansız blok yürütülene ve tamamlanana kadar beklemek istiyoruz. Bunu yapmanın en iyi yolu nedir? Aşağıdakileri denedik, ancak işe yaramıyor gibi görünüyor: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block2 }); // wait until both the block1 and …

13
Eşzamansız olarak gönderilen bir bloğun bitmesini nasıl beklerim?
Grand Central Dispatch kullanarak eşzamansız işlem yapan bazı kodları test ediyorum. Test kodu şuna benzer: [object runSomeLongOperationAndDo:^{ STAssert… }]; Testler, işlemin bitmesini beklemek zorundadır. Mevcut çözümüm şöyle: __block BOOL finished = NO; [object runSomeLongOperationAndDo:^{ STAssert… finished = YES; }]; while (!finished); Hangisi biraz kaba görünüyor, daha iyi bir yol biliyor …

8
Eşzamansız ağ istekleriyle döngü için hızlı bir şekilde yürütmenin bitmesini bekleyin
Ben bir for in loop ateş temeline ağ istekleri bir demet göndermek, sonra yöntem yürütme bittikten sonra yeni bir görünüm denetleyicisine veri geçirmek istiyorum. İşte benim kod: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)") ref.observeSingleEventOfType(.Value, withBlock: { snapshot in datesArray["\(key.0)"] …

6
iPhone - Grand Central Dispatch ana ileti dizisi
Uygulamalarımda başarılı bir şekilde büyük merkezi gönderim kullanıyorum, ancak bunun gibi bir şeyi kullanmanın gerçek avantajının ne olduğunu merak ediyordum: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff ya da dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Demek istediğim, her iki durumda da, ana iş parçacığı üzerinde yürütülecek bir bloğu ateşliyorsunuz, tam olarak uygulamanın çalıştığı …

3
Seri kuyrukta dispatch_async ve dispatch_sync arasındaki fark nedir?
Bunun gibi bir seri kuyruk oluşturdum: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); dispatch_asyncBuna benzer arasındaki fark nedir dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); Ve dispatch_syncbu seri kuyrukta böyle mi çağırıldı? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, ^{ /* TASK 2 */ …

6
GCD'de eşzamanlı ve seri sıralar
GCD'deki eşzamanlı ve seri kuyrukları tam olarak anlamakta zorlanıyorum. Bazı sorunlarım var ve birinin bana net bir şekilde ve o noktada cevap vermesini umuyorum. Görevleri birbiri ardına yürütmek için seri kuyrukların oluşturulduğunu ve kullanıldığını okuyorum. Ancak, aşağıdaki durumlarda ne olur: Bir seri kuyruk oluşturuyorum dispatch_asyncÜç kez A, B, C bloğu …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.