2012-11-02 23 views
8

एक कतार CBCentralManager, -initWithDelegate:queue: के प्रारंभकर्ता में निर्दिष्ट है।मुख्य कतार/मुख्य धागे पर CoreBluetooth प्रतिनिधि?

प्रदर्शन के परिप्रेक्ष्य से, कोर ब्लूटूथ प्रतिनिधियों को पृष्ठभूमि थ्रेड/कतार में शेड्यूल करना बेहतर है? यूआई ऑपरेशन, उदा। पैनिंग या ज़ूमिंग जेस्चर को ट्रैक करना, ब्लूटूथ में हस्तक्षेप करना?

+0

ग्रेट प्रश्न से बाहर ले जाने की आवश्यकता है। मैंने कभी एक और कतार का उपयोग करने के बारे में सोचा नहीं, लेकिन मैंने देखा कि मुझे भेजने वाला सबसे तेज़ संदेश लगभग 50 हर्ट्ज (हर 20ms) हो सकता है; इससे तेज, ऐसा लगता है कि कतारबद्ध है। – sarfata

+0

मैंने पहली बार इस बारे में देखा जब मैं बाहरी एक्सेसरी फ्रेमवर्क का उपयोग कर पिछली परियोजना पर काम कर रहा था। मुझे आश्चर्य है कि क्या यह कोर ब्लूटूथ का भी उपयोग कर रहा है। – ZhangChn

उत्तर

0

एसिंक कॉलबैक का बिंदु यह है कि उन्हें निर्धारित करने की आवश्यकता नहीं है क्योंकि भारी काम खत्म होने पर उन्हें बुलाया जाता है ... निश्चित रूप से जब आपके प्रतिनिधि विधियां भारी होती हैं, यह अब और काम नहीं करती है और यह समझ में आता है उन्हें एक अलग कतार में ले जाएं :)

या यदि उन्हें प्रति सेकेंड 10000 बार कहा जाता है। लेकिन इसके अलावा, मुझे नहीं लगता कि उन्हें मुख्य कतार

+0

आपको मेरी चिंताओं को समझने की प्रतीत नहीं होती है। यदि आप मुख्य थ्रेड पर कुछ एसिंक कॉलबैक शेड्यूल करते हैं, और जब कुछ यूआई चीजें (, जैसे पैनिंग, ड्रैगिंग, ज़ूमिंग, इवेंट ट्रैकिंग रनलोप मोड में संभवतः ईवेंट) मुख्य थ्रेड पर कब्जा करते हैं, तो इन यूआई घटनाओं को पूरा होने तक आपके कॉलबैक में देरी होगी। – ZhangChn

+0

क्यों? क्या वे लंबे और अवरुद्ध हैं? ऐसा मत सोचो .. तुम सही हो मैं तुम्हें गलत समझ गया ^^ लेकिन अब ऐसा लगता है .. वीरडर: डी आपके विचार ऑपरेशन को ब्लॉक नहीं करना चाहिए –

+0

@ZhangChn: क्या आप अपनी समस्या का समाधान करने में सक्षम थे? मैं भी एक ही समस्या से गुजर रहा हूं। मैं कोरब्लूटूथ प्रतिनिधि को एक अलग थ्रेड पर सेट करने में सक्षम हूं लेकिन यह अभी भी मुख्य धागे में आ रहा है ... विषम। – freedom

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