मैं जावा चश्मा में यह देख रहा हूँ:जावा पुनर्व्यवस्था और स्मृति मॉडल
x और y एक ही धागे और एक्स की कार्रवाई कर रहे हैं, कार्यक्रम के क्रम में y से पहले आता है तो एक्स y से पहले होता है।
है और यह भी इस
मूल कोड
थ्रेड 1
r2 = एक;
बी = 1;
वैध संकलक परिवर्तन
थ्रेड 1
बी = 1 (compilers जब इस अलगाव में है कि धागे के निष्पादन को प्रभावित नहीं करता है, या तो धागा निर्देश को पुन: व्यवस्थित करने के लिए अनुमति दी जाती है);
r2 = एक;
मैं उन दो चीजों के साथ उलझन में हूँ।
एक कार्रवाई एक्स एक कार्रवाई y से पहले आता है, तो फिर एक्स y से पहले होना चाहिए। यदि हम y = x के लिए r2 = A और y = 1 के लिए मानते हैं, तो r = = ए बी = 1 से पहले होना चाहिए। कोई रीडरिंग कैसे हो सकता है, बी = 1 को आर 2 = ए से पहले कैसे निष्पादित किया जाता है यदि एक्स पहले सच होता है तो सच होता है?
पर क्या JLS कहते आधार पर: JIT फैसला करता है कि एक * पहले * अगर वहाँ दो घटनाओं के बीच कोई निर्भरता है सही (अगर वे स्वतंत्र हैं) की जरूरत नहीं है क्या होता है ?. यह पैराग्राफ जेआईटी अनुकूलन को इंगित कर रहा है? – TheLostMind
@TheLostMind: ठीक है, या तो JIT अनुकूलन या बस JIT नहीं * को हटाने * सीपीयू अनुकूलन –
उस मामले में, * अंत में *, एक * से पहले होता है * मौजूद नहीं है। मैं इस में * बचने के विश्लेषण * के हाथ की गंध करता हूं: पी – TheLostMind