Sobes.tech
Junior — Middle

Main Dispatcher'da ishga tushirilgan korutinlarni bajarishda umumiy o'zgaruvchini xavfsiz tarzda oshirish uchun sinxronizatsiya qilish shartmi?

sobes.tech AI

AIdan javob

Agar korutinlar Main Dispatcher'da (ya'ni, asosiy oqimda) ishga tushirilsa, odatda umumiy o'zgaruvchini oshirish uchun sinxronizatsiya talab qilinmaydi, chunki kod bitta oqimda ketma-ket bajariladi.

Ammo, agar o'zgaruvchi boshqa oqimlar yoki dispatcherlar tomonidan o'zgartirilishi mumkin bo'lsa, u holda raqobat sharoitlarini oldini olish uchun sinxronizatsiya zarur.

Main Dispatcher'da xavfsiz tarzda o'zgaruvchini oshirish misoli:

var counter = 0

fun increment() {
    // Main Dispatcher'da bajariladi, shuning uchun sinxronizatsiya kerak emas
    counter++
}

Agar o'zgaruvchiga kirish turli oqimlardan bo'lsa, Mutex yoki atomik turlarni ishlatish tavsiya etiladi.