سوال ۱۰۰ کنکور ارشد مهندسی کامپیوتر ۱۴۰۵
اهمیت
۰/۵
با فرض تعریف استاندارد عملیات اتمیک compare_and_swap(value, expected, new_value) که فقط در صورت برابری *value == expected مقدار را با new_value جایگزین میکند و «مقدار قبلی (اصلی)» متغیر را برمیگرداند و با فرض متغیر سراسری int shared = 0;، پس از اجرای run() مقدار نهایی shared کدام است؟
void run() {
int expected = 0;
if (compare_and_swap(&shared, expected, 10))
shared += 2;
else
shared *= 5;
}
[یادداشت: در تصویرِ بریدهشدهٔ این سؤال، فقط قطعهکد و گزینهها دیده میشود؛ نشانگر «۱۰۰-» و جملهٔ فارسی صورت سؤال بالای قطعهکد در برش قرار نگرفتهاند.]
پاسخ صحیح: گزینهٔ A — ۵۰
پاسخ تشریحی
This tests the exact return convention of the atomic primitive compare_and_swap (CAS). …
ادامهٔ پاسخ تشریحی ویژهٔ مشترکان است.
مشاهدهٔ پاسخ کامل#compare-and-swap#atomic-instruction#synchronization#cas-semantics#hardware-primitive