Bosh sahifa Wiki Execution Context

Execution Context

Execution Context — kodning ma’lum paytda bajarilishiga ta’sir qiladigan holat va muhitning umumiy modeli. U CPU registerlaridan tashqari identity, runtime scope, cancellation, tracing yoki transaction kabi ma’lumotlarni ham qamrab olishi mumkin.

Tushuncha ko‘lami

Operatsion tizim darajasida execution context process/thread, privilege mode, address space va interrupt holatini anglatadi. Language runtime’da async taskga bog‘langan locale, security principal yoki context variablelar tushuniladi.

Implicit va explicit uzatish

Context explicit parameter sifatida uzatilsa dependency ko‘rinadi. Implicit thread-local model oddiy, ammo async task thread almashtirganda qiymat yo‘qolishi yoki boshqa requestga sizishi mumkin. Runtime logical contextni continuation bilan ko‘chiradi.

Capture

Context capture barcha qiymatni nusxalash emas: immutable mapping share qilinishi, mutable value esa ownership qoidasiga ega bo‘lishi kerak. Trace ID va deadline child taskga o‘tishi, secret yoki transaction ayrim boundaryda o‘tmasligi mumkin.

Bekor qilish

Cancellation context signal beradi, lekin operation side effectni qachon to‘xtatishi alohida contractdir. Deadline monotonic vaqtga bog‘lanadi. Parent tugashi child tasklarni structured concurrency orqali kutishi yoki bekor qilishi mumkin.

Xarajat

Context juda katta bo‘lsa har async hop xarajati oshadi. Global “bag”ga tasodifiy qiymat qo‘shish APIni yashirin bog‘laydi. Typed key va lifecycle policy ishlatiladi.

Isolation testi

Test parallel requestlar context isolationini, thread hop, nested override, exception va cancellationdan keyingi cleanupni tekshiradi. Log correlation trace ID bilan tasdiqlanadi.

Amaliy boshqaruv

Execution Context implementatsiyasida logical state va async propagation alohida va versiyalangan holat sifatida yuritiladi. Qaror uchun zarur inputlar yashirin global taxminga aylantirilmaydi: platforma, konfiguratsiya, identity yoki memory-order sharti tegishli obyekt bilan bog‘lanadi. Shu sabab incremental yangilanish, context almashishi yoki parallel hodisada eskirgan ma’lumotdan foydalanish kamayadi. Debug rejim qarorni hosil qilgan edge, state transition va parametrlarni ko‘rsatadi; production log esa maxfiy qiymatlarni xom shaklda yozmaydi.

Muhim xato sinfi — requestlar orasida context sizishi. Bunday vaziyatda tizim optimistik tarzda davom etmaydi: semantikaga qarab konservativ fallback, bounded retry, taskni bloklash yoki aniq error tanlanadi. Timeout correctness isboti emas; u faqat operatsion limitdir. Queue membership, reference count, lock ownership va visibility kabi invariantlar state bilan atomik yangilanadi. Cancellation yoki failure o‘rtada yuz bersa qisman o‘zgargan holat cleanup protokoli orqali tiklanadi.

Sifat nazorati parallel isolation va cancellation orqali bajariladi. Test normal yo‘ldan tashqari bo‘sh navbat, bitta element, yuqori contention, timeout bilan bir vaqtdagi wakeup, resurs limiti va platforma variantlarini qamraydi. To‘g‘rilik performance’dan alohida tekshiriladi; keyin throughput, p99 latency, context switch, cache miss yoki artefakt hajmi kabi mavzuga mos ko‘rsatkichlar baseline bilan solishtiriladi. Topilgan minimal interleaving yoki kirish regressiya to‘plamida doimiy saqlanadi.

Execution context propagation boundarylari hujjatlashtiriladi: child taskga trace va deadline o‘tishi, ammo database transaction yoki elevated identity faqat explicit opt-in bilan o‘tishi mumkin. Context token immutable snapshot bo‘lsa nested override qaytganda oldingi qiymat ishonchli tiklanadi.

Bog‘liq tushunchalar

execution state, thread context, async context, context variable, cancellation, tracing