क्या डेल्फी में क्रॉस थ्रेड संचार पर कोई दस्तावेज है? मैं उस धागे को संदेश कैसे भेज सकता हूं जिसमें खिड़की नहीं है?डेल्फी में क्रॉस थ्रेड संचार
उत्तर
आप केवल मानक संदेश लूप को लागू करने वाले धागे को (विंडोज़) संदेश भेज सकते हैं, जो विंडो हैंडल को महसूस करने के बाद स्वचालित रूप से बनाया जाएगा।
हालांकि धागे के साथ संवाद करने के लिए संदेशों का उपयोग करना आवश्यक नहीं है। बस इसे किसी इवेंट ऑब्जेक्ट (वीसीएल में टीवेन्ट) पर प्रतीक्षा करें, और जब आप थ्रेड को फ़ंक्शन करना चाहते हैं तो इस ईवेंट को सिग्नल करें।
लेकिन यदि आप बहु-थ्रेडिंग के लिए नए हैं - इन सभी विवरणों को अपने आप में न लें, जब तक कि आप सीखने के प्रभाव के लिए नहीं चाहते। बस OmniThreadLibrary का उपयोग करें और इसके साथ किया जाना चाहिए। एक बार जब आप इसका उपयोग कैसे करें, तो अपने आंतरिक में खुदाई करके सीखा जाना बहुत अच्छा है।
संपादित करें:
this question जो बहुत समान है के लिए भी उत्तर देखें।
संपादित करें 2:
पूछ टिप्पणी के बारे में "क्या [OmniThreadLibrary] को आसान बनाने के लिए, और किस कीमत पर है?" मैं केवल आपको अपने लिए यह जांचने की सलाह दे सकता हूं - यह है कि यदि आप कम से कम डेल्फी 2007 का उपयोग कर रहे हैं। अवधारणाओं को चित्रित करने के लिए कई नमूने हैं, लेकिन त्वरित "वास्तविक जीवन" उदाहरण के लिए आप this blog post पर एक नज़र डाल सकते हैं - आपको इसके लिए लाइब्रेरी इंस्टॉल करने की भी आवश्यकता नहीं है।
मैं यह भी मानता हूं कि बहु-थ्रेडिंग के लिए लाइब्रेरी का उपयोग करने के लिए विश्वास के एक निश्चित कार्य की आवश्यकता होती है। ओटीओएच वीसीएल प्रदान करता है जो कुछ भी करता है वह शायद ही एक विकल्प है। नमूना कोड अभी भी बीमार कल्पना सिंक्रनाइज़() कॉल का उपयोग करता है। थ्रेड-सुरक्षित निर्माता-उपभोक्ता-कतार जैसी चीज़ों के लिए कोई समर्थन नहीं है, जो बहु-थ्रेडेड प्रोग्रामिंग के लिए अधिक उपयुक्त हैं। और यदि आप सहमत हैं कि वीसीएल की तुलना में आपको अपने बहु-थ्रेडेड प्रोग्रामों के लिए एक और ठोस सिद्धांत की आवश्यकता है - उस विशेष व्हील को फिर से क्यों शुरू करें?
लाइब्रेरी का उपयोग करने की लागत के लिए: आपको खुद को समय देना होगा कि यह आपके लिए पर्याप्त तेज़ है या नहीं। यह आईएमएचओ के अच्छे तरीके से धागे के बीच संचार को अमूर्त करता है, लेकिन प्रत्येक अमूर्त लागत का प्रदर्शन स्पष्ट रूप से होता है।
यदि आप तय करते हैं कि यह आपके बाद नहीं है - कोड स्वयं लिखें। मैंने डेल्फी 4 के लिए भी ऐसा किया, और मैं लगभग 10 वर्षों से उस कोड का उपयोग कर रहा हूं। और उस समय मैंने अनुभव की गई बगों और कोने के मामलों की पुष्टि करके, मैं निश्चित रूप से किसी भी नए को बहु-थ्रेडिंग को पर के लिए अपने स्वयं के लाइब्रेरी कोड लिखने की सलाह दूंगा। और यदि आप वास्तव में वास्तव में वास्तव में चाहते हैं, तो कृपया नियमों को this posting पर दिल में ले जाएं।
सवाल Delphi Multi-Threading Message Loop भी आप धागा ऑब्जेक्ट के संदर्भ है, तो आप बस इसे प्रत्यक्ष कॉल कर सकते हैं, और प्रक्रिया की दुकान में जानकारी है या तदनुसार अद्यतन धागे
के बीच संचार के कुछ उदाहरण हैं। जाहिर है आपको चीजों को सुरक्षित तरीके से करने के लिए सावधान रहना होगा।
वैकल्पिक रूप से, आप एक केंद्रीय नियंत्रण वस्तु का उपयोग कर सकते हैं जिसके माध्यम से धागे व्यस्त नहीं होते हैं। मेरे पास एक ऐप है जहां धागे के विशेष उद्देश्य हैं, और उन्हें थ्रेड-आईडी आवंटित किया जाता है।कोई भी थ्रेड किसी संदेश-आईडी के साथ एक संदेश "पोस्ट" कर सकता है और पैरामीटर के लिए एक स्ट्रिंग को अन्य थ्रेड-आईडी पर रख सकता है और फिर उसके काम के साथ आगे बढ़ सकता है। दूसरा धागा इसे अपने अवकाश पर उठाता है, और तदनुसार कार्य करता है।
- 1. क्रॉस-डोमेन आईफ्रेम संचार
- 2. निर्माता-उपभोक्ता इंटर-थ्रेड संचार
- 3. जावा इंटर प्रोसेस संचार और इंटर थ्रेड संचार?
- 4. बिल्डिंग क्रॉस-प्लेटफार्म डेल्फी अनुप्रयोग
- 5. डेल्फी: CopyFileEx और थ्रेड
- 6. थ्रेड डेल्फी डेटाबेस आवेदन
- 7. डेल्फी थ्रेड अपवाद तंत्र
- 8. सरल थ्रेड नमूना डेल्फी
- 9. क्या अजगर में कोई अंतर्निहित क्रॉस-थ्रेड घटनाएं हैं?
- 10. बाइंडिंगसोर्स और क्रॉस-थ्रेड अपवाद
- 11. अमान्य क्रॉस-थ्रेड एक्सेस समस्या
- 12. डेल्फी में, आउटपुटडिबगस्ट्रिंग थ्रेड सुरक्षित है?
- 13. डेल्फी TWebBrowser में जावास्क्रिप्ट, बंद थ्रेड
- 14. पर्ल में सेमफोर थ्रेड संचार को कैसे कार्यान्वित करें?
- 15. क्रॉस-थ्रेड ऑपरेशन मान्य नहीं है:
- 16. पृष्ठभूमिवर्कर - क्रॉस-थ्रेड ऑपरेशन मान्य नहीं है
- 17. क्रॉस-थ्रेड ऑपरेशन मान्य नहीं है
- 18. त्रुटि: आरबी_जीसी पर क्रॉस-थ्रेड उल्लंघन()
- 19. सिल्वरलाइट डेटा बाइंडिंग क्रॉस थ्रेड इश्यू
- 20. न्यूनतम क्रॉस ऐपडोमेन संचार प्रदर्शन जुर्माना क्या है?
- 21. जावास्क्रिप्ट और फ्लैश के बीच क्रॉस-डोमेन संचार कैसे बनाएं?
- 22. क्रॉस डोमेन JSONP संचार के जोखिम क्या हैं?
- 23. WP 7 मल्टीथ्रेडिंग, अमान्य क्रॉस-थ्रेड एक्सेस
- 24. प्रिज्म के साथ मॉड्यूल में संचार?
- 25. सी/सी ++ में थ्रेड देने का क्रॉस-प्लेटफ़ॉर्म तरीका?
- 26. डेल्फी - क्या TClientDataset थ्रेड सुरक्षित है?
- 27. डेल्फी - थ्रेड नींद का समय समायोजित करना
- 28. डेल्फी के लिए थ्रेड-सुरक्षित प्राथमिकता कतार?
- 29. थ्रेड-सुरक्षित बढ़ा देते और डेल्फी
- 30. क्या डेल्फी का टैडोकोनक्शन थ्रेड-सुरक्षित है?
दरअसल, OmniThreadLibrary –
का उपयोग मैं ओ पी के रूप में एक ही स्थिति में हूँ। मुझे यह जानने के लिए बहुत कम पता है कि ओमनी थ्रेड लाइब्रेरी मेरे लिए क्या करती है, इसके अलावा "इसे आसान बनाना"। यह आसान बनाता है, और किस कीमत पर? इसके अलावा "लीकी अबास्ट्रक्शन" का मुद्दा है - यदि कुछ भी गलत हो जाता है, तो lib समस्या के दृष्टिकोण को बाधित करने जा रहा है। –
ओटीएल वीसीएल के समान कुछ करता है - यह आपके द्वारा सीधे धागे के साथ काम करने की अंतर्निहित कुरूपता को छुपाता है। यह आपको अंतर्निहित विंडोज प्राइमेटिव्स के साथ सीधे काम करने की अनुमति देगा (जैसा कि वीसीएल के समान है)। अधिक जानकारी के लिए http://otl.17slon.com/forum का उपयोग करें। – gabr