CodeBlanks Logo Icon CodeBlanks

runtime paketi

runtime paketinin temel fonksiyonlarını öğrenirsin.

runtime paketi

runtime paketi, programının altında çalışan Go çalışma zamanıyla konuşmanı sağlar: zamanlayıcı, bellek ve yığın bilgisi.

fmt.Println(runtime.NumCPU())        // çekirdek sayısı
fmt.Println(runtime.NumGoroutine())  // canlı goroutine
fmt.Println(runtime.GOOS, runtime.GOARCH)

Bu fonksiyonlar teşhis ve izleme içindir; uygulama mantığını onlara bağlamak genellikle iyi bir fikir değildir.

runtime/metrics

Go 1.16 ile gelen runtime/metrics, ReadMemStats'tan daha ucuz ve kararlı adlı ölçümler sunar:

s := []metrics.Sample{{Name: "/sched/goroutines:goroutines"}}
metrics.Read(s)
fmt.Println(s[0].Value.Uint64())

Tüm adlar metrics.All() ile listelenir; Prometheus istemcileri de bu paketi kullanır.

Uygulama Goroutine metriği

runtime/metrics ile "/sched/goroutines:goroutines" örneğini oku ve değerin 0'dan büyük olduğunu yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "runtime/metrics"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "runtime/metrics"
)

func main() {
    s := []metrics.Sample{{Name: "/sched/goroutines:goroutines"}}
    metrics.Read(s)
    fmt.Println(s[0].Value.Uint64() > 0)
}

Beklenen çıktı

true

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>runtime.GOOS</code> ne zaman belirlenir?

  • Kullanıcı ayarlar
  • Derleme anında (hedef işletim sistemi) Doğru cevap
  • Her çalıştırmada yeniden ölçülür
  • GC döngüsünde

Açıklama: GOOS ve GOARCH derlenen ikilinin hedefidir; çapraz derlemede derleyen makineden farklı olabilir.

2 Çekirdek sayısı

Soru
n := runtime.____()
Cevap
n := runtime.NumCPU()

Açıklama: NumCPU sürecin kullanabileceği mantıksal CPU sayısını verir.

3 runtime fonksiyonu

Kavram Anlamı
NumCPU Mantıksal CPU
NumGoroutine Canlı goroutine
Version Go sürümü
metrics.Read Adlı ölçümler

Uzman bölümündeki tüm dersler