चूंकि GUID पीढ़ी समय-निर्भर है, अगर System.Guid.NewGuid() को अलग-अलग धागे पर सटीक उसी पल पर कई बार कहा जाता है, तो क्या यह समान GUID को वापस कर सकता है?क्या यह कई समान GUID का कारण बन सकता है?
उत्तर
Windows पर, GUIDs (UUIDs) UuidCreate साथ एक क्रिप्टोग्राफिक यादृच्छिक संख्या जनरेटर से बनाया जाता है। वे RFC 4122 के संदर्भ में संस्करण 4 यूयूआईडी हैं। जब तक आप UuidCreateSequential के साथ बनाए गए पुराने स्कूल संस्करण 1 GUID का उपयोग नहीं कर रहे हैं, तब तक कोई टाइमस्टैम्प या ईथरनेट कार्ड शामिल नहीं होते हैं।
नहीं, इसके अंदर एक सीरियल नंबर है कि प्रत्येक कॉल के लिए बदल जाता है, एक ही सिस्टम डुप्लिकेट GUIDs नहीं बनाएगा पर अलग धागे पर तो कई एक साथ कॉल है।
इसका मतलब यह नहीं है कि ग्रिड का एक दृश्य हिस्सा है कि आप प्रत्येक कॉल के लिए वेतन वृद्धि देख सकते हैं।
Transact-SQL NEWID समारोह और आवेदन एपीआई कार्यों और तरीकों के साथ साथ अपने नेटवर्क कार्ड की पहचान संख्या सीपीयू घड़ी से एक अद्वितीय संख्या से नए uniqueidentifier मूल्यों उत्पन्न करते हैं। प्रत्येक नेटवर्क कार्ड में एक अद्वितीय पहचान संख्या होती है। NEWID द्वारा वापस किया गया अद्वितीय पहचानकर्ता मान सर्वर पर नेटवर्क कार्ड का उपयोग करके उत्पन्न होता है। एप्लिकेशन एपीआई फ़ंक्शंस और विधियों द्वारा लौटाया गया अद्वितीय पहचानकर्ता क्लाइंट पर नेटवर्क कार्ड का उपयोग करके उत्पन्न होता है।
यह अभ्यस्त समय में या प्रति msdn रूप में किसी भी पीसी में डुप्लिकेट उत्पन्न करते हैं।
जब तक आपकी धागे आपकी मशीन पर विभिन्न कोर पर चल रहे हैं, केवल एक धागा एक निश्चित समय पर वास्तव में चल रहा होगा। इसलिए, मुझे नहीं लगता कि यह बहुत संभावना है कि न्यूगुइड() को कॉल एक ही समय में किया जाएगा।
मुझे नहीं लगता कि मल्टीकोर इन दिनों इतने बेतुका है इसलिए मैं कहूंगा कि यह बहुत गारंटी है कि आजकल कोड कई बिंदुओं पर एकाधिक कोर पर चलाएगा। –
हां, लेकिन आम तौर पर एक प्रक्रिया केवल एक कोर पर चलती है (क्योंकि धागे स्मृति साझा करते हैं और उसी प्रक्रिया के विभिन्न धागे चलाने वाले कोर के बीच स्मृति स्थानांतरित करते हैं।) कम से कम, मुझे एक साल पहले अपने ओएस पाठ्यक्रम से याद है। मैं इस बिंदु पर गलत हो सकता है। – apoorv020
कैश इलाके के लिए, शेड्यूलर आम तौर पर एक ही कोर (ओं) पर एक प्रक्रिया से धागे रखना पसंद करेंगे। लेकिन यह शायद ही गारंटी है। एकमात्र चलने योग्य धागे सभी एक ही प्रक्रिया से हो सकते हैं। सर्वर ऐप्स में यह काफी आम है। शेड्यूलर की अनियमितताओं के बावजूद, आप एक साथ कई प्रक्रियाओं से GUID बनाए जा सकते हैं। –
देखें देखें, कि मैं क्या मान लिया लेकिन 'अंदर सीरियल नंबर' कहीं का कोई उल्लेख नहीं देखा है - आप एक संदर्भ मिल गया है? – billybum
दुर्भाग्यवश मेरे पास इस आलेख का एक लिंक नहीं है जो मैंने पढ़ा है कि इस धारावाहिक संख्या का उल्लेख किया गया है, लेकिन यदि आप यूयूडक्रेट के लिए प्रलेखन को देखते हैं, तो मूल फ़ंक्शन जो विंडोज़ में गिड्स उत्पन्न करता है (http://msdn.microsoft.com/en -us/लाइब्रेरी/ए 3737205), आप देखेंगे कि यह कहता है कि "यूयूआईडी केवल इस कंप्यूटर के लिए अद्वितीय होने की गारंटी है।" स्पष्ट रूप से यह ऐसी गारंटी नहीं दे सकता है कि प्रत्येक कॉल के लिए कम से कम एक चीज नहीं है। –
धन्यवाद, लेकिन यह अभी भी पूरी तरह से निर्णायक नहीं है ... – billybum