
พื้นฐาน Goroutine
Goroutine, คีย์เวิร์ด go, sync.WaitGroup, runtime.GOMAXPROCS, goroutine leak
1Goroutine ใน Go คืออะไร?
Goroutine ใน Go คืออะไร?
คำตอบ
goroutine คือฟังก์ชันที่ทำงานพร้อมกันกับฟังก์ชันอื่น ๆ ถูกจัดการโดย Go runtime แทนที่จะเป็น OS มันเบามาก (สแตกเริ่มต้นไม่กี่ KB) เมื่อเทียบกับ OS thread (หลาย MB) Go scheduler สามารถมัลติเพล็กซ์ goroutine หลายพันหรือแม้แต่หลายล้านตัวบน OS thread จำนวนจำกัด ทำให้การทำงานพร้อมกันเข้าถึงได้ง่ายมากใน Go
2จะเริ่ม goroutine ใหม่ใน Go ได้อย่างไร?
จะเริ่ม goroutine ใหม่ใน Go ได้อย่างไร?
คำตอบ
คีย์เวิร์ด go ตามด้วยการเรียกฟังก์ชันจะเริ่ม goroutine ใหม่ ตัวอย่างเช่น 'go myFunction()' หรือ 'go func() { ... }()' สำหรับฟังก์ชันแบบไม่ระบุชื่อ goroutine จะทำงานทันทีแบบขนานไปกับโค้ดที่เรียก คำเตือน: ฟังก์ชัน main จะไม่รอ goroutine ที่เปิดขึ้นให้ทำงานเสร็จโดยอัตโนมัติ
3ความแตกต่างหลักระหว่าง goroutine กับ OS thread คืออะไร?
ความแตกต่างหลักระหว่าง goroutine กับ OS thread คืออะไร?
คำตอบ
goroutine ใช้สแตกเริ่มต้นประมาณ 2 KB ในขณะที่ OS thread มักต้องการ 1-2 MB Go runtime จัดการ scheduling ของ goroutine ในพื้นที่ผู้ใช้ (M:N scheduling) โดยมัลติเพล็กซ์ goroutine หลายพันตัวบน OS thread เพียงไม่กี่ตัว สิ่งนี้ทำให้สามารถสร้าง goroutine ได้หลายล้านตัวโดยไม่ทำให้ระบบทำงานหนักเกินไป ต่างจาก OS thread ที่ถูกจำกัดด้วยทรัพยากร
จะเกิดอะไรขึ้นถ้าโปรแกรมหลักจบลงก่อนที่ goroutine จะทำงานเสร็จ?
Go runtime จัดการการทำงานของ goroutine อย่างไร?
+17 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
การจัดการข้อผิดพลาด
Channels
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
Database/SQL
แพ็กเกจ context
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
gRPC
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
Microservices
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
Go ขั้นสูง
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี