2011-03-01 17 views
5

के बीच कोई अंतर क्या कोई अंतर (। प्रदर्शन, कार्यान्वयन .whatever) निम्नलिखित के बीच है समारोहkernel32.dll नींद और Thread.Sleep()

ii)

Thread.Sleep() 
+2

स्पष्ट अंतर यह है कि किसी को देशी कोड में उपयोग करने के लिए डिज़ाइन किया गया है, दूसरा .NET Framework को लक्षित करने वाले प्रबंधित कोड में। क्या आप समझा सकते हैं कि आप * उस भेद से * क्या जानना चाहते हैं? –

+0

क्या हमें वैकल्पिक फॉर्म का उपयोग करने पर विचार करने की आवश्यकता है, या दोनों उद्देश्य उद्देश्य से सर्वर करेंगे? –

+2

नहीं, जब आप सी # कोड लिख रहे हों तो कर्नेल 32.dll से आपको कभी भी पी/इन 'स्लीप' को आमंत्रित करने का कोई कारण नहीं है। 'थ्रेड। स्लीप' ठीक काम करेगा, और पसंदीदा तरीका है। –

उत्तर

2

वास्तव में एक बड़ा अंतर है।

This blog post बताता है कि क्यों प्रबंधित धागे कभी भी अप्रबंधित अवरोधन नहीं करना चाहिए, यदि संभव हो तो। official MSDN documentation में सभी अंतर्निहित विवरणों के बिना एक ही दिशानिर्देश है।

पीएस Thread.Sleep is a sign of a poorly-designed program

+0

सहमत हुए। आप प्रबंधित थ्रेड की अप्रबंधित अवरोध क्यों करना चाहते हैं, ज़ाहिर है, मेरे बाहर। –

-1

मुझे ऐसा लगता है नहीं होगा। वे दोनों केवल मौजूदा धागे पर काम करते हैं।

मुख्य थ्रेड में स्लीप फ़ंक्शन का उपयोग करते समय सावधानी बरतें क्योंकि सिंक्रनाइज़ समय पर निर्भर प्रोग्राम आमतौर पर बाहरी कॉन्फ़िगरेशन बदलते समय समस्याएं पैदा करते हैं।

समर्थन या नींद में सुनने का उपयोग आमतौर पर एक समस्या नहीं है।