Bosh sahifa Wiki Thread State

Thread State

Thread State — threadning scheduler va runtime nuqtai nazaridan ready, running, waiting, suspended yoki terminated kabi joriy lifecycle holati.

Process ichidagi holat

Bir process ichidagi threadlar mustaqil state’da bo‘ladi: biri I/O kutsa boshqasi ishlashi mumkin. Kernel thread state run queue va wait queue bilan, managed runtime state esa GC safepoint yoki monitor wait bilan boyitilishi mumkin.

Runnable va parked

Runnable so‘zi ayrim OSda ready hamda runningni birlashtiradi. Sleeping interruptible yoki uninterruptible bo‘lishi mumkin. Parked thread runtime primitive orqali event kutadi va CPU sarflamaydi.

Runtime qatlamlari

Blocked native syscall managed runtime workerini band qilishi mumkin. Async I/O yoki ko‘proq carrier thread buni yumshatadi. Virtual thread state user-level scheduler bilan kernel carrier state’ini ajratadi.

Suspension

Suspension debugger yoki runtime stop-the-world uchun ishlatiladi. Thread lock ushlab turgan joyda majburan suspend qilinsa deadlock xavfi bor; cooperative safepoint xavfsiz nuqtani kutadi.

Thread dump

State dump deadlock tahlilida thread stack, kutayotgan lock va lock owner bilan birga ko‘rsatiladi. Bir lahzalik RUNNABLE yuqori CPU degani emas; samplelar kerak.

Transition testi

Test wait/notify, timeout, interrupt, cancellation, join va safepoint o‘tishlarini qamraydi. State va queue membership bir-biriga mosligi tekshiriladi.

Amaliy boshqaruv

Thread State implementatsiyasida thread lifecycle va runtime safepoint 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 — parked/runnable metadata nomosligi. 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 wait, interrupt va dump testi 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.

Thread state transitioni monitor yoki lock ownershipi bilan bog‘langan bo‘lsa dump blocked threadning qaysi obyektni kutayotganini ko‘rsatadi. Deadlock detector wait-for graphda cycle qidiradi. Native lock va managed monitor ma’lumotlarini birlashtirish uchun runtime hamda OS thread ID mapping saqlanadi.

Monitoring agent state nomlarini platformadan umumiy modelga map qilsa original raw state’ni ham saqlaydi. Shu orqali “waiting” ichidagi I/O va lock farqi yo‘qolmaydi.

Bog‘liq tushunchalar

thread lifecycle, runnable thread, blocked thread, safepoint, scheduler, thread dump