आईओएस आवेदन में गिनती सेमफोर को कार्यान्वित करना संभव है?आईओएस एप्लिकेशन में सेमफोर को कैसे कार्यान्वित करें?
5
A
उत्तर
14
हां, यह संभव है। काफी कुछ तुल्यकालन उपकरण उपलब्ध हैं:
- @synchronized
- NSLock
- NSCondition
- NSConditionLock
- GCD संकेतबाहु
- pthread ताले
- ...
मैं "Threading Programming Guide" पढ़ने और कुछ और विशिष्ट पूछने का सुझाव देना चाहता हूं।
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()
संबंधित मुद्दे
- 1. वितरित सेमफोर को कैसे कार्यान्वित करें?
- 2. पर्ल में सेमफोर थ्रेड संचार को कैसे कार्यान्वित करें?
- 3. xcode4 में एप्लिकेशन परीक्षणों को कैसे कार्यान्वित करें?
- 4. .NET विंडोज़ एप्लिकेशन में 'पूर्ववत' ऑपरेशन को कैसे कार्यान्वित करें?
- 5. किसी वेब एप्लिकेशन में REST को कैसे कार्यान्वित करें?
- 6. आईओएस: हस्तलेख मान्यता कैसे कार्यान्वित करें?
- 7. एक्सकोड में डेल्फी आईओएस फ़ायरमॉन्की एप्लिकेशन को डीबग कैसे करें?
- 8. आईओएस एप्लिकेशन में विभिन्न CAAnimation को कैसे चेन करें
- 9. आईओएस ऐप में गेम सेंटर कैसे कार्यान्वित करें?
- 10. आईओएस प्रोजेक्ट में CHCircularBuffer को कैसे कार्यान्वित करें? मेरे गेम आईओएस प्रोजेक्ट के लिए
- 11. सेमफोर कार्यान्वयन। वर्तमान में
- 12. मेरे वेब एप्लिकेशन में संबद्ध लिंक कैसे कार्यान्वित करें?
- 13. फोनगैप में AdMob को कैसे कार्यान्वित करें
- 14. एमवीवीएम एप्लिकेशन में पूर्ववत/फिर से कैसे कार्यान्वित करें?
- 15. DataGridView में ऑटोस्कोल को कैसे कार्यान्वित करें?
- 16. सी ++ में इंटरफेस को कैसे कार्यान्वित करें?
- 17. सी # में सिंगलटन को कैसे कार्यान्वित करें?
- 18. मोंगोद में पेजिंग को कैसे कार्यान्वित करें?
- 19. रूबी में "कॉलबैक" को कैसे कार्यान्वित करें?
- 20. php में बिटमैस्क को कैसे कार्यान्वित करें?
- 21. BigQuery में "पसंद" को कैसे कार्यान्वित करें?
- 22. निरंतरता को कैसे कार्यान्वित करें?
- 23. बैज को कैसे कार्यान्वित करें?
- 24. जीएलएसएल, सेमफोर?
- 25. is_pointer को कैसे कार्यान्वित करें?
- 26. फोनगैप में SQLite डेटाबेस को कैसे कार्यान्वित करें?
- 27. आईओएस डिजिटल ज़ूम। कुशलता से कैसे कार्यान्वित करें?
- 28. वॉयस चेंजर को कैसे कार्यान्वित करें?
- 29. आईओएस - एप्लिकेशन
- 30. जावा क्लाइंट एप्लिकेशन (एंड्रॉइड) और PHP सर्वर एप्लिकेशन के बीच संचार को कैसे कार्यान्वित करें?
और ओएसएसपीनॉक। – Jano
@ सिंचोनिज्ड मेरा एफएवी है। यदि ब्लॉक करने के लिए कोई स्पष्ट वस्तु नहीं है तो इसे स्थिर एनएसएनंबर जैसी वैश्विक वस्तु के साथ प्रयोग करें। एक सेमफोर मॉडल से चिपकने से संभावित रूप से पठनीयता, आदि –
वैश्विक वस्तु पर सिंक्रनाइज़ करना एक बुरा विचार है। आप नहीं जानते कि कोई अन्य कोड भी सिंक्रनाइज़ कर रहा है ताकि आप अपने आप को डेडलॉक के जोखिम के बारे में बता सकें। हमेशा सीमित दृश्यता वाले किसी चीज़ पर सिंक्रनाइज़ करें जो स्पष्ट रूप से कार्य के लिए है। इसके अलावा, स्वयं पर सिंक्रनाइज़ न करें; दोबारा, आप नहीं जानते कि एक ही वस्तु का उपयोग करके और क्या हो सकता है। – occulus