Rumah  >  Artikel  >  Apa itu ctx dalam golang

Apa itu ctx dalam golang

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2023-06-09 14:34:082672semak imbas

ctx dalam Golang ialah singkatan Konteks, yang merupakan jenis dalam pustaka standard dan digunakan untuk memindahkan metadata seperti meminta nilai khusus skop, isyarat pembatalan dan tarikh akhir antara "goroutine".

Apa itu ctx dalam golang

Sistem pengendalian untuk tutorial ini: Sistem Windows 10, versi Go1.20.1, komputer Dell G3.

Di Golang, ctx ialah singkatan Konteks, yang merupakan jenis dalam perpustakaan standard.

Jenis konteks digunakan untuk menghantar metadata seperti meminta nilai khusus skop, isyarat pembatalan dan tarikh akhir antara gorouti. Apabila membuat permintaan, Konteks akar boleh dibuat dan dihantar ke rantai panggilan sepanjang aplikasi. Apabila permintaan disebarkan, Konteks ini boleh disalin oleh gorout lain dan digunakan untuk komunikasi asas. Fungsi utama

ctx ialah:

  • Mengirim metadata: Dalam rantaian panggilan rangkaian permintaan HTTP, beberapa maklumat metadata (seperti token kebenaran pengguna) perlu diluluskan dan digunakan sepanjang jalan , ctx ialah kaedah pilihan untuk melaksanakan senario ini.

  • Kawal masa tamat dan pembatalan: Dalam rangkaian panggilan bersarang fungsi berbilang peringkat, ralat selalunya perlu menembusi setiap lapisan rantai panggilan Dalam sesetengah kes, Goroutine dan ctx juga perlu dibatalkan pada masa yang sama. Ini adalah cara penting untuk menyelesaikan masalah seperti ini.

Berikut ialah kod sampel ringkas yang menggambarkan cara menggunakan ctx untuk mengawal pembatalan dan tamat masa goroutine.

func main() {
   ctx, cancel := context.WithCancel(context.Background())
   defer cancel() // 常用结合 defer 安排执行
   go doSomething(ctx)
   time.Sleep(10 * time.Second)
}
func doSomething(ctx context.Context) {
   select {
      case <-time.After(time.Hour):
         fmt.Println("do something")
      case <-ctx.Done():
         fmt.Println("canceled by user:", ctx.Err())
      }
}

Dalam kod sampel, Konteks dicipta menggunakan `context.WithCancel` dan membawa fungsi pembatalan (`cancel()`) dan kemudian menghantarnya ke fungsi `doSomething`. Dalam `doSomething`, 2 daripada saluran dipantau melalui `select` Apabila 10 saat berlalu, goroutine utama melaksanakan fungsi `cancel`, dengan itu menghantar isyarat Selesai kepada `ctx`, yang menyebabkan goroutine `doSomething` Receive. isyarat ini dan

Atas ialah kandungan terperinci Apa itu ctx dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn