2010-11-10 11 views
8

मेरे पास एक त्वरित प्रश्न है। मुझे एकाधिक सेंसर से डेटा पकड़ने के लिए एक छोटा बहुप्रचारित कार्यक्रम बनाना है और मुझे दोनों pthreads और qthreads का ज्ञान है। मेरे पास दोनों पुस्तकालयों तक पहुंच है। व्यक्तिगत रूप से मैं अपने डिजाइन और विभिन्न कार्यक्षमताओं के कारण क्यूटी का उपयोग करने के पक्ष में पक्षपातपूर्ण हूं। लेकिन क्या एक बनाम दूसरे का उपयोग करने पर एक महत्वपूर्ण फायदा है? धन्यवादQThreads बनाम Pthreads

उत्तर

8

QThreads pthreads पर बनाए जाते हैं। वे ऑब्जेक्ट ओरिएंटेड अमूर्तता प्रदान करते हैं, जिससे धागे के साथ काम करना आसान हो जाता है। QThreads पोर्टेबल के अलावा, वे अंतर्निहित थ्रेड सिस्टम का उपयोग कर जो भी सिस्टम चला सकते हैं, जबकि pthreads POSIX सिस्टम के विशिष्ट हैं।

QThreads का उपयोग करने का लगभग एकमात्र नुकसान यह है कि आपको अपने आवेदन को क्यूटी के खिलाफ लिंक करना होगा; यह निर्भरता आपके आवेदन को वितरित करने में थोड़ा और कठिन बना सकती है।

+0

हां .. मैं बस इसे देख रहा था और यह आंतरिक रूप से ऐसा लगता है कि यह कैसे किया जाता है। धन्यवाद peoro। मैं वास्तव में विशेष रूप से देख रहा था कि tryLock() को pthread_mutex_trylock का उपयोग करके कार्यान्वित किया गया है। मुझे लगता है कि यह कैसा है। – blueskin

+2

एकमात्र वितरण समस्या यह है कि जब आप गतिशील रूप से क्यूटी पुस्तकालयों से लिंक करते हैं तो आपको अपने कोड के साथ एलजीपीएल लाइसेंस शामिल करना होगा (यह माना जाता है कि आप खुले सोर्स किए गए हैं और व्यावसायिक स्रोत संस्करण नहीं हैं)। विंडोज़ पर, यदि आप अनिश्चित हैं कि आपको कौन सी डीएलएलएस वितरित करने की आवश्यकता होगी, तो 'depend.exe' का उपयोग करें और यह आपको बिल्कुल बताएगा! http://www.dependencywalker.com/ – g19fanatic

2

मुझे लगता है कि चीजों के दिल में QThread लिनक्स के तहत pthread का उपयोग करता है। मुझे यकीन नहीं है कि इसके विंडोज़ पक्ष के लिए हुड के नीचे क्या है। जब तक कुछ विशिष्ट pthread एपीआई फ़ंक्शंस नहीं हैं जो आपको QThread के साथ उपलब्ध नहीं हैं, तो मैं आपको पोर्टेबिलिटी से लाभ उठाने के लिए केवल QThread के साथ रहूंगा। मैं उम्मीद नहीं करता कि वहां कोई महत्वपूर्ण प्रदर्शन अंतर होगा। Qthread आपको थ्रेड सीमाओं में सिग्नल/स्लॉट तंत्र का उपयोग करने की अनुमति देगा।

4

लेकिन आपको यह जानना होगा कि QThreads मैनेजमेंट के लिए इवेंट लूप का उपयोग किस प्रकार करते हैं, इसलिए आप केवल थ्रेड को थ्रेड नहीं कर सकते हैं। यदि थ्रेड लंबे और कड़ी मेहनत करते हैं, तो इसे रिलीज़ नहीं होने पर इसे रोकना संभव नहीं है। कुछ मामलों में यह महत्वपूर्ण है।

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