2010-06-17 14 views
10

रूबी का नेट :: HTTP थ्रेडसेफ है?रूबी का नेट :: HTTP थ्रेडसेफ है?

+1

मान लीजिए कि आप MacRuby या JRuby पर नहीं हैं, क्या इससे कोई फर्क पड़ता है? रनटाइम वास्तव में किसी भी तरह से multithreaded नहीं है, एक समय में केवल एक धागा चला सकता है। – Theo

+0

कोई फर्क नहीं पड़ता? तो अगर नेट: http आपके कनेक्शन के लिए कुछ वैश्विक स्थिति बनाए रखता है और रनटाइम दो धागे के बीच आगे और पीछे स्विच करता है, तो कुछ भी गलत नहीं होगा? मुझे नहीं पता कि नेट: http थ्रेडसेफ है या नहीं, लेकिन मुझे पता है कि आपका जवाब गलत है। – bridiver

उत्तर

2

मैं इस पर भरोसा नहीं होता (version_1_1 और version_1_2 तरीकों जो यह स्पष्ट रूप से कहते हैं के अलावा नहीं हैं)।

2008 में, matz wrote:

एमआरआई (1.8.x) और YARV (1.9.x) के लिए, हर सी कार्यान्वित तरीकों, जीआईएल (ग्लोबल दुभाषिया लॉक) द्वारा संरक्षित कर रहे हैं, ताकि आप डॉन ' टी के बारे में चिंता करने के लिए है। लेकिन यह प्रत्येक कार्यान्वयन पर निर्भर हो सकता है।

नेट :: HTTP stdlib में है, जिसका अर्थ है कि यह सी (या कम से कम, सी में पूरी तरह लागू नहीं किया गया है) में लागू नहीं किया गया है। मुझे लगता है कि जीआईएल पर मैट का नोट आज भी सही है, जो यह इंगित करेगा कि जीआईएल नेट :: HTTP पर नहीं रखा जाएगा। इसलिए, मुझे संदेह है कि यह थ्रेडसेफ होगा।

मैं दुर्भाग्य से नहीं रूबी के वर्तमान संस्करण के लिए डॉक्स में निश्चित प्रमाण नहीं पाया है, हालांकि मुझे लगता है यह भी Concurrency in jruby से इस बिट उल्लेख योग्य है: में

कम से कम इन कक्षाओं [कोर वर्गों और वर्गों stdlib] थ्रेड-सुरक्षित नहीं माना जाता है, और यदि आप अन्य ऑपरेशन के साथ को एक साथ बदलना चाहते हैं तो आप लॉकिंग (उदाहरण के लिए म्यूटेक्स के साथ) लॉन्च करना चाहते हैं: स्ट्रिंग, ऐरे, हैश और किसी भी डेटा संरचना उनसे व्युत्पन्न ।

मुझे लगता है कि नेट :: HTTP के आसपास ताले जोड़ने या थ्रेडसेफ विकल्प का उपयोग करके इसे सुरक्षित रखना सबसे अच्छा होगा।

+0

आप लॉक @nick – bcackerman

+0

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

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