एनएसटीएचड और पर्थ्रेड के बीच क्या अंतर है? क्या एनएसटीएचड अपने आंतरिक कार्यान्वयन के रूप में पाथ्रेड का उपयोग करता है और क्या हमें वास्तव में आईएसटी पर पर्याप्त रूप से पर्याप्त होने पर एनएसटीएचड के अतिरिक्त ओवरहेड की आवश्यकता होती है।एनएसटीएचएड वीएस पर्थ्रेड
उत्तर
मुझे यह सुनिश्चित नहीं है कि NSThread
आंतरिक रूप से pthreads लाइब्रेरी का उपयोग करें। यह शायद करता है, लेकिन चूंकि हमारे पास NSThread
के लिए स्रोत कोड नहीं है, इसलिए हम वास्तव में नहीं जानते हैं।
अंतर यह है कि pthread
एक सी पुस्तकालय है और NSThread
एक ऑब्जेक्टिव-सी पुस्तकालय है। लेकिन वे दोनों एक ही कार्यक्षमता को पूरा करते हैं।
एक ऑब्जेक्टिव-सी पुस्तकालय के लिए की जरूरत आप ऑब्जेक्टिव-सी एपीआई के अन्य भागों के साथ संयोजन में उपयोग करने की आवश्यकता है, तो है। आईई, आप स्टोरNSArray
में एक पाथ्रेड करने में सक्षम नहीं होंगे।
जहां तक मुझे पता है कि एनएसटीएचड पी-धागे का उपयोग नहीं करता है, जब तक कि ऐप्पल ने मूल रूप से चीजों को बदल दिया हो। ओओपीसी की जड़ें पॉज़िक्स मानक के लिए बहुत जल्दी थीं (पठार 1 सी में आया था, जो 1 99 5 में मुझे लगता था)। यह वर्तमान उद्देश्य-सी रनटाइम्स पर आधारित कई आलोचनाओं में से एक है। http://www.jot.fm/issues/issue_2009_01/article4.pdf देखें, हालांकि आप मानक सी पुस्तकालयों के माध्यम से उद्देश्य-सी में pthreads तक पहुंच सकते हैं। हमने वास्तव में इस परियोजना को एक प्रोजेक्ट में बनाया था और लाइब्रेड्स का उपयोग करके निर्मित लाइब्रेरी के साथ बातचीत करते समय मुद्दों में भाग लिया था (यह लगभग NSNotificationQueue
के साथ रन लूप था)।
मैं नहीं जानता, लेकिन यह पूरी तरह से प्रशंसनीय है कि NSThread मूल रूप pthreads के अलावा कुछ प्रयोग किया जाता है (ङ .g। मैक थ्रेड एपीआई का सीधा उपयोग)। लेकिन मुझे लगता है कि यह संभावना है कि आज यह वास्तव में pthreads का उपयोग करता है। साक्ष्य:/सिस्टम/लाइब्रेरी/फ्रेमवर्क/फाउंडेशन.फ्रेमवर्क/फाउंडेशन में स्ट्रिंग "एनएसटीएचडी * _एनएसटीएचडीजीटी 0 (pthread_t)" है। एक पठित को एनएसटीएचडी में बदलने के लिए एक अनियंत्रित एपीआई की तरह दिखता है? जिसका अर्थ है कि एनएसटीएचएड शायद एक पाथ्रेड रैपर है (जो बदले में सिर्फ मैच धागे के लिए एक रैपर है) –
मुझे लगता है कि यह पठ्रेड का उपयोग करता है। @ पाब्लो के उत्तर में पोस्ट किए गए कॉल स्टैक देखें। –
- 1. एनएसटीएचएड
- 2. पर्थ्रेड प्राथमिकता
- 3. एनएसटीएचएड बनाम NSOperationQueue बनाम ??? आईफोन
- 4. पर्थ्रेड और प्रतीक्षा की शर्तें
- 5. अधिसूचित होने तक एनएसटीएचएड को कैसे रोकें?
- 6. पर्थ्रेड लाइब्रेरी में थ्रेड को मारें
- 7. वीएस
- 8. वीएस
- 9. वीएस
- 10. वीएस
- 11. वीएस
- 12. वीएस
- 13. वीएस
- 14. वीएस
- 15. वीएस
- 16. वीएस
- 17. getchar_unlocked() वीएस स्कैनफ़() वीएस सीएन
- 18. कैश वीएस सत्र वीएस कुकीज़?
- 19. वीएस 2010 और वीएस 2012
- 20. सी ++ पर्थ्रेड अवरुद्ध कतार डेडलॉक (मुझे लगता है)
- 21. क्या कोई पर्थ्रेड स्वयं पर साफ-सफाई कर सकता है?
- 22. बूस्ट थ्रेड लाइब्रेरी या पर्थ्रेड में प्रमुख अंतर क्या हैं?
- 23. पर्थ्रेड: लोग pthread_exit का उपयोग क्यों परेशान करते हैं?
- 24. वेबफॉर्म वीएस एएसपी.नेट एमवीसी वीएस -2010 लोडटेस्ट
- 25. वीएस -2010 और वीएस -2008 परियोजना संगतता
- 26. वीएस -2008 से वीएस -2010 परियोजना रूपांतरण
- 27. एसजीएनएन वीएस -2008 से वीएस -2010
- 28. वीएस 2008
- 29. वीएस -2008
- 30. वीएस -2010
एनएसटीएचएड आंतरिक रूप से AFAIK pthreads का उपयोग करता है। हालांकि, थ्रेड प्रबंधन और सिंक्रनाइज़ेशन के लिए अधिक लचीला और शक्तिशाली तंत्र प्रदान कर सकते हैं, जैसे कि एक और थ्रेड समाप्त होने तक प्रतीक्षा करें .. – Andy
मैं किसी दुर्घटना से कुछ कॉल स्टैक देख रहा हूं और यह पठार से भरा है। इसका मतलब यह नहीं होता NSThread pthread का उपयोग करता है, लेकिन यह कह रहा है: '6 \t फाउंडेशन \t __NSThread__start__ + 1024', ' 7 \t libsystem_pthread.dylib \t _pthread_body + 240', '8 \t libsystem_pthread.dylib \t _pthread_body + 282', '9 libsystem_pthread.dylib \t thread_start + 4' –