অলস্যাসিটটি আরএমডাব্লু আন্তঃ থ্রেড যোগাযোগের জন্য ব্যবহার করা যেতে পারে, কারণ এক্সচজিটি পারমাণবিক, দৃশ্যমানতার জন্য, যখন লেখক থ্রেড প্রক্রিয়াটি একটি ক্যাশে লাইনের অবস্থান পরিবর্তন করে, পাঠক থ্রেডের প্রসেসর এটি পরবর্তী পঠনে দেখতে পাবে, কারণ ইন্টেল সিপিইউর ক্যাশে সমন্বয় প্রোটোকলটি গ্যারান্টি দেবে LazySet কাজ করে, তবে ক্যাশে লাইনটি পরবর্তী পঠিত সময়ে আপডেট হবে, আবারও সিপিইউ যথেষ্ট আধুনিক হতে হবে।
http://sc.tamu.edu/systems/eos/nehalem.pdf
নেহালেমের জন্য যা একটি মাল্টি-প্রসেসর প্ল্যাটফর্ম, প্রসেসরগুলিতে সিস্টেম প্রসেসি এবং অন্যান্য প্রসেসরের অ্যাক্সেসের জন্য অ্যাড্রেস বাসকে "স্নুপ" (ইভাসড্রপ) করার ক্ষমতা রয়েছে এবং তাদের অভ্যন্তরীণ ক্যাশে। তারা সিস্টেমের মেমরির সাথে এবং অন্যান্য আন্তঃসংযুক্ত প্রসেসরের ক্যাশেগুলির সাথে উভয় ক্ষেত্রেই তাদের অভ্যন্তরীণ ক্যাশেগুলি সামঞ্জস্য রাখতে এই স্নুপিং ক্ষমতাটি ব্যবহার করে। স্নুপিংয়ের মাধ্যমে যদি কোনও প্রসেসর সনাক্ত করে যে অন্য প্রসেসরটি বর্তমানে ভাগ করা অবস্থায় ক্যাশ করেছে এমন মেমরির স্থানে লিখতে চায়, তবে স্নুপিং প্রসেসরের পরের বার একই মেমরির অবস্থানটি অ্যাক্সেস করার পরে ক্যাশে লাইন সম্পাদন করতে বাধ্য করা তার ক্যাশে ব্লকটি অকার্যকর করবে will ।
x86 সিপিইউ আর্কিটেকচার-> এর জন্য ওরাকল হটস্পট জেডিকে
অলসেট == অনিরাপদ.পুট অর্ডারডলং == এক্সচজিআরডাব্লু (এসএমএল নির্দেশ যা নেলিম ইন্টেল সিপুতে 20 চক্রের জন্য নরম বাধা হিসাবে কাজ করে)
x86 (x86_64) এ এই ধরনের বাধা অস্থায়ী বা অ্যাটমিকলং getAndAdd এর চেয়ে অনেক কম দক্ষতার ভিত্তিতে
একটি নির্মাতায়, একটি ভোক্তা কাতারের দৃশ্যে, এক্সএইচজি নরম বাধা অলস্যাসেটের আগে কোডস লাইনকে জোর করতে পারে (সিকোয়েন্স + 1) প্রযোজক থ্রেডের পূর্বে যে কোনও ভোক্তা থ্রেড কোড ব্যবহার করবে (অবশ্যই কাজ করবে) নতুন ডেটা ব্যবহার করবে ভোক্তা থ্রেডটিকে পরমাণুভাবে পরীক্ষা করতে হবে যে তুলনাঅ্যান্ডসেট (সিকোয়েন্স, সিকোয়েন্স + 1) ব্যবহার করে প্রযোজক সিকোয়েন্সটি বাড়ানো হয়েছিল।
সিপিপি কোডটিতে অলস সেটটির সঠিক ম্যাপিংয়ের জন্য আমি হটস্পট উত্স কোডের পরে সনাক্ত করেছি:
http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/prims/unsafe। সিপিপি
অনিরাপদ_সেটঅর্ডার্ডলং -> SET_FIELD_VOLATILE সংজ্ঞা -> অর্ডারঅ্যাক্সেস: রিলিজ_স্টোর_ফেন্স ence X86_64 এর জন্য, অর্ডারঅ্যাক্সেস: রিলিজ_স্টোর_ফেন্স xchg নির্দেশ ব্যবহার করে সংজ্ঞায়িত করা হয়েছে।
আপনি দেখতে পাবেন যে এটি কীভাবে জে ডি কে in এ সংজ্ঞায়িত করা হয়েছে (ডগ লিয়া জেডিকে 8 এর জন্য কিছু নতুন স্টাফের উপর কাজ করছে):
http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/4fc084dac61e/src/os_cpu/ linux_x86 / VM / orderAccess_linux_x86.inline.hpp
আপনি এইচডিআইএস ব্যবহার করে অলস সেটের কোড অ্যাসেমব্লিকে কার্যবিচ্ছিন্ন করতে পারেন।
আরও একটি সম্পর্কিত প্রশ্ন রয়েছে:
xchg ব্যবহার করার জন্য আমাদের কি mfence দরকার?