यह मैं threads::shared
वर्णन से पढ़ साझा:पर्ल चर atomicity और दृश्यता
डिफ़ॉल्ट रूप से, चर प्रत्येक थ्रेड के लिए निजी हैं, और प्रत्येक नव निर्मित धागे प्रत्येक मौजूदा चर की एक निजी प्रतिलिपि हो जाता है। यह मॉड्यूल आपको अलग धागे भर में चर साझा करने के लिए अनुमति देता है ... (more)
चलो कहते हैं कि मैं इस तरह एक साझा चर करते हैं:
my $var :shared;
$var = 10;
इसका मतलब यह है चर के लिए सभी धागे मैं बनाने के लिए केवल एक बार ही मौजूद है ।
अब atomicity और दृश्यता के बारे में:
thread_A प्रदान करती है, तो एक नया मान मान लीजिए कि 11 करते हैं:
$var = 11;
यह गारंटी है कि thread_B (और अन्य सभी धागे मैं बनाया है हो सकता है) मूल्य 11 देखेंगे? और क्या असाइनमेंट परमाणु प्रदर्शन किया जाता है?
या क्या हमें लॉक प्राप्त करने के लिए पहले जावा में पसंद है और फिर असाइनमेंट करें और लॉक को रिलीज़ करें। और एक ही लॉक का उपयोग करने वाले धागे को अद्यतन मूल्य देखने की गारंटी है?
या यह जावा में अस्थिर आदिम चर की तरह व्यवहार करता है?