2009-03-21 11 views
8

मेरे पास एक TClientDataset है जो थ्रेड में प्रबंधित होता है 1.डेल्फी - क्या TClientDataset थ्रेड सुरक्षित है?

एक अलग थ्रेड में मेरे पास TClientDataset की क्लोन छवि है।

क्या मैं थ्रेडिंग समस्याओं में भागूंगा?

संपादित

क्लोन छवि एक अपरिवर्तनीय मोड में प्रयोग किया जाता है।

उत्तर

15

संक्षिप्त उत्तर नहीं है, क्लाइंटडेटासेट थ्रेड सुरक्षित नहीं है। अधिक शामिल उत्तर यह है कि यह इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे करते हैं। इससे कोई फर्क नहीं पड़ता कि आपके पास क्लाइंटडेटासेट के कितने क्लोन हैं, वे तब तक कई धागे से उपयोग करने के लिए सुरक्षित हैं जब तक आप केवल डेटा पढ़ रहे हों। यह तब भी सही है जब आप अलग-अलग श्रेणियां, वर्तमान रिकॉर्ड, फ़िल्टर, और बहुत कुछ सेट कर रहे हों।

और, हालांकि आपने इसके बारे में नहीं पूछा है, तो आप किसी भी क्लोन क्लाइंटडेटासेट्स को भी मुक्त कर सकते हैं, यहां तक ​​कि मूल क्लाइंटडेटासेट जिसे क्लोन किया गया था, समस्याओं के बिना।

दूसरी तरफ, यदि किसी भी क्लोन में रिकॉर्ड पोस्ट करने की आवश्यकता है या डेटा को फिर से लोड करना है, तो आपको सिंक्रनाइज़ेशन ऑब्जेक्ट का उपयोग करना होगा। यदि परिवर्तन दुर्लभ हैं, तो इस उद्देश्य के लिए उपयोग करने के लिए TMultiReadExclusiveWriteSynchronizer वर्ग बहुत अच्छा है।

4

क्लोन प्रक्रिया को टीक्रिटिकलसेक्शन के साथ संभाला जाना चाहिए, लेकिन प्रत्येक TClientDataSet अपने स्वयं के धागे में ठीक होना चाहिए।

11

एक शब्द में: नहीं

VCL सब के सब "धागा असुरक्षित" माना जाना चाहिए। एक टीटीएचड में दृश्य घटकों के लिए कोई भी कॉल सिंक्रनाइज़ेशन ईवेंट में किया जाना चाहिए।

कोई भी वीसीएल/आरटीएल कक्षा पूरी तरह से टीटीएचड के भीतर बनाई और नष्ट होनी चाहिए।

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