7

यूआई तत्वों को यूआई थ्रेड से हमेशा क्यों बनाया/अपडेट किया जाना चाहिए?यूआई तत्वों को यूआई थ्रेड से हमेशा क्यों बनाया/अपडेट किया जाना चाहिए?

में (लगभग?) सभी प्रोग्रामिंग भाषाओं यूआई तत्वों को केवल यूआई थ्रेड से सुरक्षित रूप से एक्सेस/संशोधित किया जा सकता है। मैं समझता हूं कि यह एक मानक समवर्ती पहुंच और सिंक्रनाइज़ेशन समस्या है, लेकिन क्या यह वास्तव में आवश्यक है? क्या यह व्यवहार प्रोग्रामिंग भाषाओं या ऑपरेटिंग सिस्टम द्वारा लगाया गया है? क्या कोई प्रोग्रामिंग भाषाएं हैं जहां यह स्थिति अलग है?

उत्तर

9

यह ग्राफिक्स ढांचे द्वारा लगाया गया है - जो ऑपरेटिंग सिस्टम द्वारा अक्सर प्रदान की जाती है (लेकिन हमेशा नहीं)।

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

+0

ढांचे के लिए जांच करना आसान नहीं होगा और किसी को किसी असुरक्षित तरीके से कॉल करने का जोखिम लेने के बजाय कॉल को स्वयं मार्शल करना होगा? नेट फ्रेमवर्क कम से कम हमारे लिए यह कर सकता था ... – ak3nat0n

+0

मैं नहीं कहूंगा। यदि आप किसी टेक्स्टबॉक्स की टेक्स्ट प्रॉपर्टी पर कॉल करते हैं, तो अभी यह एक बहुत तेज़ सेट है। यदि आप ढांचे पर हैंडलिंग को दबाते हैं, * प्रत्येक * कॉल उस जुर्माना से बंधेगा, भले ही अधिकांश अपडेट यूआई थ्रेड से आ रहे हों। – jasonh

+0

@zaladane: मुझे लगता है कि यूआई थ्रेड पर कोड चलाने के लिए आवश्यक होने पर यह स्वचालित रूप से (स्वचालित रूप से) निर्धारित करना इतना आसान नहीं हो सकता है। मैं यूआई थ्रेड पर कोड का एक विशिष्ट टुकड़ा चलाने के लिए भाषा (शायद असुरक्षित कीवर्ड की तरह थोड़ा) में एक निर्माण का पक्ष लेगा। डिस्पैचर कोड को पढ़ने के लिए यह थोड़ा आसान होगा। – Zyphrax

6

यह बहुत महंगा (धीमा) होगा पूरा यूआई थ्रेड-सुरक्षित। प्रोग्रामर पर बोझ डालने के लिए बेहतर (अपेक्षाकृत दुर्लभ) अवसर में सिंक करने के लिए एक थ्रेड को यूआई को अपडेट करने की आवश्यकता होती है।

5

ऐसा इसलिए है क्योंकि यूआई ढांचे को इस तरह से डिजाइन किया गया है। यह एक यूआई ढांचे को डिजाइन करना सैद्धांतिक रूप से संभव है जो वास्तव में बहु-थ्रेडेड है, लेकिन डेडलॉक्स से बचना मुश्किल है।

Graham Hamilton ने स्विंग, मुख्य जावा यूआई ढांचे के संदर्भ में इसके बारे में एक अच्छा लेख लिखा।

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