কর্টেক্স এম 3 "লোড-এক্সক্লুসিভ" (এলডিআরএক্স) এবং "স্টোর-এক্সক্লুসিভ" (এসটিআরএক্স) নামে অভিহিত অপারেশনগুলির কার্যকর জুড়ি (অন্যান্য অনেক মেশিনেও সাধারণ) সমর্থন করে। ধারণাগতভাবে, LDREX অপারেশন একটি লোড সঞ্চালন করে, লোড হয়েছে এমন স্থানটি অন্য কোনও কারণে লিখিত হতে পারে কিনা তা পর্যবেক্ষণ করতে কিছু বিশেষ হার্ডওয়্যারও সেট করে। শেষ এলডিআরএক্স-এর ব্যবহৃত ঠিকানায় একটি স্ট্রাক্স সম্পাদন করা হলে সেই ঠিকানাটি কেবল তখনই লেখা হয় যদি অন্য কোনও কিছু না লিখে থাকে । স্ট্রাক্সের নির্দেশনা যদি স্টোর হয় তবে 0 দিয়ে একটি রেজিস্টার, বা যদি এটি বাতিল করা হয় তবে 1 দিয়ে একটি লোড করবে।
দ্রষ্টব্য যে স্ট্রেক্স প্রায়শই হতাশাবাদী। বিভিন্ন পরিস্থিতিতে রয়েছে যেখানে এটি ঠিক করতে পারে যদি প্রশ্নটির অবস্থানটি স্পর্শ না করা হয় তবে এমনকি দোকানটি সম্পাদন না করার সিদ্ধান্ত নিতে পারে। উদাহরণস্বরূপ, একটি এলডিআরএক্স এবং স্ট্রেক্সের মধ্যে একটি বাধাগুলি স্ট্রেক্সকে ধরে নেওয়া লোকেশনটি আঘাত হানে বলে অনুমান করবে। এই কারণে, সাধারণত LDREX এবং STREX এর মধ্যে কোডের পরিমাণ হ্রাস করা ভাল ধারণা। উদাহরণস্বরূপ, নীচের মতো কিছু বিবেচনা করুন:
ইনলাইন শূন্যস্থান Safe_increment (uint32_t * সংযোজক)
{
uint32_t new_value;
করা
{
নতুন_মূল্য = __ldrex (সংযোজক) + 1;
} যখন (__ স্ট্রেক্স (নতুন_মূল্য, সংযোজক));
}
যা এমন কিছুর সংকলন করে:
; ধরুন R0 প্রশ্নে ঠিকানাটি ধারণ করেছে; r1 ট্র্যাশেড
LP:
ldrex r1, [r0]
আর 1, আর 1, # 1 যুক্ত করুন
strex আর 1, আর 1, [আর 0]
সিএমপি আর 1, # 0; শূন্য না হলে পরীক্ষা করুন
bne lp
.. কোড অবিরত
কোডটি বেশিরভাগ সময় কার্যকর করে, এলডিআরএক্স এবং স্ট্রেক্সের মধ্যে তাদের "বিঘ্নিত" করার কিছুই ঘটবে না, সুতরাং স্ট্রেক্স আরও অগ্রগতি ছাড়াই সফল হবে। তবে, এলডিআরএক্স বা এডিডি নির্দেশের সাথে সাথেই যদি কোনও বাধা ঘটে, তবে স্ট্রিএক্স স্টোরটি সম্পাদন করবে না, পরিবর্তে কোডটি [r0] এর (সম্ভবত আপডেট হওয়া) মানটি পড়তে ফিরে যাবে এবং একটি নতুন বর্ধিত মানের গণনা করবে এর উপর ভিত্তি করে
Safe_increment এর মতো ক্রিয়াকলাপ তৈরি করতে LDREX / STREX ব্যবহার করে কেবল সমালোচনামূলক বিভাগই পরিচালনা করা সম্ভব হয় না, তবে অনেক ক্ষেত্রে তাদের প্রয়োজনীয়তা এড়াতেও সম্ভব করে তোলে।