SORU
5 Ocak 2011, ÇARŞAMBA


Grand Central kullanılarak dispatch_sync Gönderme

Herkes çok açık kullanım GCD dispatch_sync amacı ne durumda açıklayabilir mi? Bunu kullanmak isterdim nerede olduğunu bir türlü anlamıyorum.

Teşekkürler!

CEVAP
5 Ocak 2011, ÇARŞAMBA


Bir blok yürütme ve sonuçları beklemek istediğiniz zaman kullanabilirsiniz.

Bunun bir örneği gönderme yerine eşitleme için sıra kilitleri kullanarak nereye desen. Örneğin, paylaşılan bir NSMutableArray varsayalım erişim gönderme sırası q aracılık a,. Bir arka plan iş parçacığı ön plan iş parçacığı ilk madde çekerek iken (zaman uyumsuz) diziye ekleme, olabilir (eş zamanlı olarak):

NSMutableArray *a = [[NSMutableArray alloc] init];
// All access to `a` is via this dispatch queue!
dispatch_queue_t q = dispatch_queue_create("com.foo.samplequeue", NULL);

dispatch_async(q, ^{ [a addObject:something]; }); // append to array, non-blocking

__block Something *first = nil;            // "__block" to make results from block available
dispatch_sync(q, ^{                        // note that these 3 statements...
        if ([a count] > 0) {               // ...are all executed together...
             first = [a objectAtIndex:0];  // ...as part of a single block...
             [a removeObjectAtIndex:0];    // ...to ensure consistent results
        }
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigDawsVlogs

    BigDawsVlogs

    17 HAZİRAN 2013
  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • Phlearn Photoshop and Photography Tutorials

    Phlearn Phot

    11 EKİM 2011