2012-01-10 12 views

उत्तर

14

हां, यह संभव है। काफी कुछ तुल्यकालन उपकरण उपलब्ध हैं:

  • @synchronized
  • NSLock
  • NSCondition
  • NSConditionLock
  • GCD संकेतबाहु
  • pthread ताले
  • ...

मैं "Threading Programming Guide" पढ़ने और कुछ और विशिष्ट पूछने का सुझाव देना चाहता हूं।

+0

और ओएसएसपीनॉक। – Jano

+0

@ सिंचोनिज्ड मेरा एफएवी है। यदि ब्लॉक करने के लिए कोई स्पष्ट वस्तु नहीं है तो इसे स्थिर एनएसएनंबर जैसी वैश्विक वस्तु के साथ प्रयोग करें। एक सेमफोर मॉडल से चिपकने से संभावित रूप से पठनीयता, आदि –

+0

वैश्विक वस्तु पर सिंक्रनाइज़ करना एक बुरा विचार है। आप नहीं जानते कि कोई अन्य कोड भी सिंक्रनाइज़ कर रहा है ताकि आप अपने आप को डेडलॉक के जोखिम के बारे में बता सकें। हमेशा सीमित दृश्यता वाले किसी चीज़ पर सिंक्रनाइज़ करें जो स्पष्ट रूप से कार्य के लिए है। इसके अलावा, स्वयं पर सिंक्रनाइज़ न करें; दोबारा, आप नहीं जानते कि एक ही वस्तु का उपयोग करके और क्या हो सकता है। – occulus

4

मैं यह करने के एक देशी आईओएस वस्तु खोजने में असमर्थ था, लेकिन यह सी पुस्तकालय का उपयोग कर बस ठीक काम करता है:

#import "dispatch/semaphore.h" 
... 
dispatch_semaphore_t activity; 
... 
activity = dispatch_semaphore_create(0); 
... 
dispatch_semaphore_signal(activity); 
... 
dispatch_semaphore_wait(activity, DISPATCH_TIME_FOREVER); 

आशा है कि मदद करता है।

6
इस तरह

:

dispatch_semaphore_t sem = dispatch_semaphore_create(0); 

[self methodWithABlock:^(id result){ 
    //put code here 
    dispatch_semaphore_signal(sem); 

    [self methodWithABlock:^(id result){ 
     //put code here 
     dispatch_semaphore_signal(sem); 
    }]; 
}]; 

dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); 
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); 

क्रेडिट http://www.g8production.com/post/76942348764/wait-for-blocks-execution-using-a-dispatch

3

स्विफ्ट 3 में आप एक DispatchSemaphore उपयोग कर सकते हैं।

// initialization 
let semaphore = DispatchSemaphore(value: initialValue) 

// wait, decrement the semaphore count (if possible) or wait until count>0 
semaphore.wait() 

// release, increment the semaphore count 
semaphore.signal() 
संबंधित मुद्दे

 संबंधित मुद्दे