Geri qayıt
Go concurrency distilled: Go-da paralellik haqqında pulsuz mini kitab
SiTech AI Team2 წთ. საკითხავი

Go concurrency distilled: Go-da paralellik haqqında pulsuz mini kitab

Anton Jiyanovun pulsuz «Go concurrency distilled» mini kitabı çıxıb: Go-da paralel proqramlaşdırmanın qısa təkrarı, goroutine və kanallardan context, mutex, atomik əməliyyatlar və istehsalat diaqnostikasına qədər, interaktiv nümunələrlə.

Go-ya həsr olunmuş antonz.org bloqunun müəllifi Anton Jiyanov 26 sentyabrda «Go concurrency distilled» pulsuz mini kitabını dərc edib. Müəllif onu Go-da paralel proqramlaşdırmanın qısa təkrarı kimi təqdim edir, yeni başlayanlar üçün kurs kimi yox: sıfırdan öyrənmək və praktik tapşırıqlar üçün əvvəlki kitabı «Gist of Go: Concurrency» nəzərdə tutulub. Müəllifin sözlərinə görə, yeni kitab AI olmadan yazılıb.

Kitabın tam mətni brauzerdə interaktiv nümunələrlə işləyir: hər parçanın kodunu dəyişib birbaşa səhifədə işə salmaq olar. Statik nümunələrlə PDF versiyası GitHub-da nalgeon/go-conc-distilled repozitoriyasındadır.

goroutine-lərdən pipeline-lara

İlk fəsillər əsasları əhatə edir: go açar sözü ilə başladılan goroutine-lər, onları sinxronlaşdıran wait group-lar və goroutine-lərin bir-birinə dəyər ötürdüyü kanallar: bufersiz və buferli, bağlı və nil variantları. Sonra məlumat axınlarını idarə edən, goroutine-ləri ləğv edən və bloklamayan əməliyyatlar yerinə yetirən select gəlir.

Ayrı bir fəsil pipeline-lara həsr olunub: hər addım bir kanaldan oxuyub digərinə yazır, xətaların idarəsi üçün isə üç yanaşma təqdim edilir: ilk xətada qayıtmaq, cavabı və xətanı bir nəticə tipində birləşdirmək və ya xətaları ayrı kanalda toplamaq.

Vaxt, context və sinxronizasiya

Vaxta ayrı fəsil var: fasilələr üçün time.After, təxirə salınmış işlər üçün timer-lər və dövri tapşırıqlar üçün ticker-lər; dövr daxilində müəllif hər dəfə yeni timer yaratmaq əvəzinə bir timer-i sıfırlamağı məsləhət görür. Əsas vəzifəsi əməliyyatları əl ilə, fasilə və ya son tarixlə ləğv etmək olan context, qat-qat quruluşu ilə birlikdə izah olunur: alt context üst context-in son tarixini yalnız qısaldır, cancel-ın çoxsaylı çağırışları isə təhlükəsizdir. Ləğvin səbəbləri və context.AfterFunc ilə qeydə alınan təmizləmə funksiyaları da təsvir olunub.

Sonra sinxronizasiya primitivləri gəlir: Go-nun yeni metodu ilə wait group-lar, TryLock və RWMutex ilə mutex-lər, semaforlar, signal və broadcast ilə şərt dəyişənləri, sync.Once, zibil toplayıcının yükünü azaltmaq üçün sync.Pool və atomik əməliyyatlar. Müəllif -race bayrağı ilə race detector-ün tutduğu data race ilə tuta bilmədiyi race condition arasındakı fərqi vurğulayır.

Testlər, planlaşdırma və diaqnostika

Testlərdə kitab kodun artıq təqdim etdiyi sinxronizasiya nöqtələrinə arxalanmağı məsləhət görür: kanallar və ya Wait metodu olan tiplər. Onlar yoxdursa, synctest paketi testi saxta saatlı təcrid olunmuş qabarcıqda işlədir, buna görə vaxtdan asılı yoxlamalar dərhal tamamlanır.

Son fəsillər goroutine-ləri əməliyyat sistemi saplarına paylayan planlaşdırıcıya (bir goroutine üçün təxminən 2 KB stek lazımdır) və istehsalat diaqnostikasına həsr olunub: runtime/metrics paketi, CPU, heap, goroutine, block və mutex profilləri olan pprof, go tool trace ilə izləmə və son izi sürüşən pəncərədə saxlayan flight recording.

SSiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.