2011-07-20 6 views
5

Threading in C# by Joseph Albahari वार्ता संक्षिप्त इसके बारे में, उन्होंने कहा:प्रतिनिधियों पर BeginInvoke और EndInvoke दोनों पूर्ण बाड़ उत्पन्न करते हैं?

परोक्ष निम्नलिखित उत्पन्न पूर्ण बाड़:

  • सी # के ताला बयान (Monitor.Enter/Monitor.Exit)
  • Interlocked वर्ग पर सभी तरीकों (हम 'इन जल्द ही
  • अतुल्यकालिक कॉलबैक कि थ्रेड पूल का उपयोग को कवर किया जाएगा) - इन अतुल्यकालिक प्रतिनिधियों, एपीएम कॉलबैक शामिल हैं, और टास्क निरंतरता
  • स्थापना और एक संकेत पर इंतजार कर
  • कुछ भी है कि इस तरह के आरंभ या किसी कार्य पर इंतजार कर के रूप में संकेत पर निर्भर करता है, निर्माण

के रूप में "अतुल्यकालिक प्रतिनिधियों" सूची में है, मुझे लगता है था कि कम से कम EndInvoke पूरी तरह से है बाड़ लगी। लेकिन BeginInvoke के बारे में क्या? दुर्भाग्य से मैं BeginInvoke कोड में F11 (= डीबग चरण) नहीं कर सका - क्या स्रोत कहीं उपलब्ध है? हालांकि एक निश्चित उत्तर का एक लिंक भी बेहतर होगा।

+1

(BeginInvoke क्रम द्वारा प्रदान की गई Microsoft से उपलब्ध है इसके योगिनी; वास्तव में ऐसा कोई स्रोत नहीं है) –

+0

आपका मतलब है कि उन्होंने उन दो विधियों को सीधे मशीन कोड में विकसित किया है? ;) लेकिन ईमानदार, यह जानना अच्छा होगा कि थ्रेड सुरक्षा के मामले में कोई गारंटी है या नहीं, यह स्वतंत्र है कि एमएस के स्रोतों को देखने का कोई तरीका है या नहीं। मुझे 'नवीनतम मानकों' के विभाजन II और IV में 'बाधा', 'बाड़', 'अस्थिर' शब्दों में से कोई भी नहीं मिला या 'वर्किंग ड्राफ्ट' जिसे मैंने डाउनलाउड किया [http://msdn.microsoft.com/ en-us/netframework/aa569283.aspx] –

+0

आवश्यक रूप से मशीन कोड, सी या सी ++ आवश्यक नहीं है। यदि आप वास्तव में इसे देखना चाहते हैं तो आप यह देखने के लिए मोनो स्रोत कोड डाउनलोड कर सकते हैं कि उन्होंने यह कैसे किया। – codenheim

उत्तर

-1

MSDN कहते हैं BeginInvoke threadsafe है: http://msdn.microsoft.com/en-us/library/0b1bf3y3.aspx

वहाँ कि धागा सुरक्षित हैं एक नियंत्रण पर चार तरीके हैं: आह्वान, BeginInvoke, EndInvoke, और CreateGraphics नियंत्रण के लिए संभाल पहले से ही

बनाया गया है
+1

मेरा मानना ​​है कि प्रश्न लेखक 'Control.BeginInvoke' के बारे में नहीं पूछ रहा था, लेकिन 'प्रतिनिधि' की 'BeginInvoke' और' EndInvoke' 'के बारे में नहीं पूछ रहा था। – paercebal

+0

अकेले थ्रेडसेफ होने से ज्यादा कुछ नहीं कहता है। – CodesInChaos

+1

हाँ, इस मामले में, मुझे Control.BeginInvoke में रूचि नहीं है, लेकिन प्रतिनिधियों पर आरंभ/EndInvoke। –

-1

स्रोत कोड पूरा ढांचा पर Reference Source Website

+0

BeginInvoke और EndInvoke के लिए स्रोत कोड कहां है? मैं .NET 3.5SP1 पर हूं, इसलिए मैंने ".NET_3.5_sp1_redist" के स्रोतों को देखा - वे वहां नहीं हैं। मार्क ग्रेवेल ने कहा, यह शायद रनटाइम के स्रोतों में है, न कि नेट लाइब्रेरी इसके शीर्ष पर चल रहा है (और मैं आपके लिंक के लिए धन्यवाद के स्रोत डाउनलोड कर सकता हूं)। –

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