सी # और जावा में पिछले काम से, मैं इस तरह के रूप में एक बयान के आदी हूँ यह नहीं किया जा रहा धागा सुरक्षित:रूबी धागे लिखने पर टकरा नहीं सकते हैं?
x += y;
हालांकि, मैं धागे के बीच किसी भी टकराव का पालन करने के लिए जब ऊपर कोड चल नहीं कर पाए हैं रूबी के साथ समानांतर में।
मैंने Ruby automatically prevents multiple threads from writing to the same data concurrently पढ़ा है। क्या ये सच है? +=
ऑपरेटर इसलिए रुबी में थ्रेड-सुरक्षित है?
कोई विचार अगर जीआईएल को कभी भी 'x + = y' निष्पादित करने के बीच में धागे के लिए गिरा दिया जाएगा? या क्या यह कभी भी अधिग्रहण और _statement_ सीमाओं पर जारी किया गया है? या उच्च स्तरीय सीमाएं? – sarnold
सामान्य रूप से धागे के उत्तर का एक बहुत ही विवरण http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading पर पाया जा सकता है। – Chris
@ कर्नाल्ड: जीवीएम की रिहाई सभी अंडरलिंग सी कोड पर निर्भर करती है। उदाहरण के लिए, 'बिग्नम' गुणा के कार्यान्वयन में, यदि संख्या किसी निश्चित आकार के बाहर हैं, तो जीवीएल जारी किया जाएगा ताकि अन्य * रूबी * कोड निष्पादित हो सके जबकि सी गुणों को गुणित करता है। यदि आप सी एक्सटेंशन विकसित करते हैं तो जीवीएल केवल आपके लिए चिंता का विषय है। – Linuxios