ইন ডকুমেন্টেশন std::memory_order
cppreference.com উপর নিরুদ্বেগ ক্রম একটি উদাহরণ থাকে:
স্বচ্ছন্দ অর্ডার
পারমাণবিক ক্রিয়াকলাপগুলি
memory_order_relaxed
সিঙ্ক্রোনাইজেশন অপারেশন নয়; তারা সমবর্তী মেমরি অ্যাক্সেসগুলির মধ্যে কোনও অর্ডার চাপায় না। তারা কেবল পারমাণবিকতা এবং পরিবর্তন আদেশের সামঞ্জস্যের গ্যারান্টি দেয়।উদাহরণস্বরূপ, x এবং y শুরুতে শূন্যের সাহায্যে
// Thread 1: r1 = y.load(std::memory_order_relaxed); // A x.store(r1, std::memory_order_relaxed); // B // Thread 2: r2 = x.load(std::memory_order_relaxed); // C y.store(42, std::memory_order_relaxed); // D
r1 == r2 == 42 উত্পাদনের অনুমতি দেওয়া হয়েছে কারণ, যদিও A থ্রেড 1 এর মধ্যে B এর আগে সিকোয়েন্সড হয় এবং থ্রেড 2 এর মধ্যে সি এর অনুক্রম হয় তবে Y এর সংশোধন ক্রমে D এর আগে উপস্থিত হতে কোনও কিছুই D কে বাধা দেয় না এবং B এক্স এর পরিবর্তনের ক্রমে সি এর সামনে উপস্থিত হওয়া। D এ Y এর পার্শ্ব-প্রতিক্রিয়া থ্রেড 1 এ লোড এ-এর কাছে দৃশ্যমান হতে পারে এবং বি তে X এর পার্শ্ব প্রতিক্রিয়া থ্রেড 2-এ লোড সি-তে দৃশ্যমান হতে পারে D বিশেষত, ডি সি এর পূর্বে সম্পন্ন হলে এটি ঘটতে পারে থ্রেড 2, হয় সংকলক পুনর্বিন্যাসের কারণে বা রানটাইম এর কারণে।
এটি বলে যে "থ্রেড 2 এর মধ্যে ডি এর আগে সি অনুক্রমযুক্ত"।
সিক্যুয়েন্সড-পূর্বের সংজ্ঞা অনুসারে, যা অর্ডার অফ মূল্যায়নে পাওয়া যায় , যদি A এর পূর্বে বি সিকোয়েন্সড করা হয়, তবে খ এর মূল্যায়ন শুরুর আগে A এর মূল্যায়ন সম্পন্ন হবে। যেহেতু সি থ্রেড 2 এর মধ্যে ডি এর আগে ক্রমযুক্ত, তাই ডি শুরু হওয়ার আগে সি পূর্ণ করতে হবে, সুতরাং স্ন্যাপশটের শেষ বাক্যটির শর্তের অংশটি কখনই সন্তুষ্ট হবে না।