KonkurStudy

سوال ۱۰۰ کنکور ارشد مهندسی کامپیوتر ۱۴۰۵

اهمیت
۰/۵

با فرض تعریف استاندارد عملیات اتمیک 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;
}

[یادداشت: در تصویرِ بریده‌شدهٔ این سؤال، فقط قطعه‌کد و گزینه‌ها دیده می‌شود؛ نشانگر «۱۰۰-» و جملهٔ فارسی صورت سؤال بالای قطعه‌کد در برش قرار نگرفته‌اند.]

#compare-and-swap#atomic-instruction#synchronization#cas-semantics#hardware-primitive