# รูปแบบ Concurrency (Go) > Worker pool, pipeline, fan-out/fan-in, การยกเลิก, context, errgroup, semaphore - 24 คำถามสัมภาษณ์ - Mid-Level - [คำถามสัมภาษณ์: Go](https://sharpskill.dev/th/technologies/go/interview-questions.md) ## 1. Worker pool ใน Go คืออะไร? **คำตอบ** Worker pool คือรูปแบบ concurrency ที่ใช้ goroutine (worker) จำนวนคงที่เพื่อประมวลผล task จาก channel ที่ใช้ร่วมกัน รูปแบบนี้ช่วยจำกัดจำนวน goroutine ที่ทำงานอยู่และควบคุมการใช้ทรัพยากรของระบบ ต่างจากการสร้าง goroutine หนึ่งตัวต่อหนึ่ง task ตรงที่ worker pool จะนำชุด worker กลับมาใช้ซ้ำเพื่อประมวลผล task จำนวนมากอย่างมีประสิทธิภาพ ## 2. ข้อได้เปรียบหลักของการใช้ worker pool แทนการสร้าง goroutine หนึ่งตัวต่อหนึ่ง task คืออะไร? **คำตอบ** การจำกัดจำนวน goroutine ที่ทำงานอยู่ช่วยควบคุมการใช้ทรัพยากรของระบบ (หน่วยความจำและ CPU) และหลีกเลี่ยงภาระเกิน การสร้าง goroutine หนึ่งตัวต่อหนึ่ง task อาจทำให้เกิด goroutine พร้อมกันหลายพันหรือหลายล้านตัว ทำให้ scheduler อิ่มตัวและหน่วยความจำหมด Worker pool รักษาจำนวน worker ที่เหมาะสมที่สุดซึ่งประมวลผล task ตามลำดับ จึงรับประกันประสิทธิภาพที่คาดการณ์ได้แม้ภายใต้ภาระสูง ## 3. Pipeline ในบริบทของ concurrency ใน Go คืออะไร? **คำตอบ** Pipeline คือชุดของขั้นตอน (stage) ที่เชื่อมต่อกันด้วย channel โดยแต่ละขั้นตอนเป็นกลุ่มของ goroutine ที่รันฟังก์ชันเดียวกัน แต่ละขั้นตอนรับข้อมูลผ่าน channel ขาเข้า ทำการประมวลผล แล้วส่งผลลัพธ์ผ่าน channel ขาออก รูปแบบนี้ช่วยแบ่งการประมวลผลที่ซับซ้อนออกเป็นขั้นตอนที่เรียบง่ายและนำกลับมาใช้ใหม่ได้ ทำให้ประกอบและทดสอบแต่ละองค์ประกอบได้อย่างอิสระ ## มีอีก 21 คำถาม - จะปิด channel ใน worker pool อย่างถูกต้องเพื่อส่งสัญญาณสิ้นสุดการประมวลผลได้อย่างไร? - ความแตกต่างระหว่าง fan-out และ fan-in คืออะไร? สมัครฟรี: https://sharpskill.dev/th/login ## หัวข้อสัมภาษณ์ Go อื่นๆ - [พื้นฐาน Go](https://sharpskill.dev/th/technologies/go/interview-questions/go-basics.md): 25 คำถาม, Junior - [โครงสร้างข้อมูล Go](https://sharpskill.dev/th/technologies/go/interview-questions/go-data-structures.md): 20 คำถาม, Junior - [อินเทอร์เฟซใน Go](https://sharpskill.dev/th/technologies/go/interview-questions/go-interfaces.md): 18 คำถาม, Junior - [การจัดการข้อผิดพลาด](https://sharpskill.dev/th/technologies/go/interview-questions/error-handling.md): 20 คำถาม, Junior - [พื้นฐาน Goroutine](https://sharpskill.dev/th/technologies/go/interview-questions/goroutines-basics.md): 20 คำถาม, Junior - [Channels](https://sharpskill.dev/th/technologies/go/interview-questions/channels.md): 22 คำถาม, Junior - [Go Modules](https://sharpskill.dev/th/technologies/go/interview-questions/go-modules.md): 18 คำถาม, Mid-Level - [เซิร์ฟเวอร์ HTTP](https://sharpskill.dev/th/technologies/go/interview-questions/http-server.md): 24 คำถาม, Mid-Level - [ไคลเอนต์ HTTP](https://sharpskill.dev/th/technologies/go/interview-questions/http-client.md): 18 คำถาม, Mid-Level - [การเข้ารหัส JSON](https://sharpskill.dev/th/technologies/go/interview-questions/json-encoding.md): 20 คำถาม, Mid-Level - [Database/SQL](https://sharpskill.dev/th/technologies/go/interview-questions/database-sql.md): 22 คำถาม, Mid-Level - [แพ็กเกจ context](https://sharpskill.dev/th/technologies/go/interview-questions/context-package.md): 20 คำถาม, Mid-Level - [Testing](https://sharpskill.dev/th/technologies/go/interview-questions/testing.md): 22 คำถาม, Mid-Level - [ไพรมิทีฟการซิงโครไนซ์](https://sharpskill.dev/th/technologies/go/interview-questions/sync-primitives.md): 22 คำถาม, Mid-Level - [เฟรมเวิร์กเว็บ Go](https://sharpskill.dev/th/technologies/go/interview-questions/go-web-frameworks.md): 20 คำถาม, Mid-Level - [การออกแบบ REST API](https://sharpskill.dev/th/technologies/go/interview-questions/rest-api-design.md): 20 คำถาม, Mid-Level - [gRPC](https://sharpskill.dev/th/technologies/go/interview-questions/grpc.md): 22 คำถาม, Mid-Level - [Reflection](https://sharpskill.dev/th/technologies/go/interview-questions/reflection.md): 20 คำถาม, Senior - [การจัดการหน่วยความจำ](https://sharpskill.dev/th/technologies/go/interview-questions/memory-management.md): 24 คำถาม, Senior - [การเพิ่มประสิทธิภาพการทำงาน](https://sharpskill.dev/th/technologies/go/interview-questions/performance-optimization.md): 22 คำถาม, Senior - [Generics](https://sharpskill.dev/th/technologies/go/interview-questions/generics.md): 20 คำถาม, Senior - [Go Design Patterns](https://sharpskill.dev/th/technologies/go/interview-questions/design-patterns.md): 24 คำถาม, Senior - [Microservices](https://sharpskill.dev/th/technologies/go/interview-questions/microservices.md): 24 คำถาม, Senior - [ความปลอดภัยและการยืนยันตัวตน](https://sharpskill.dev/th/technologies/go/interview-questions/security-authentication.md): 24 คำถาม, Senior - [Docker & Containerization](https://sharpskill.dev/th/technologies/go/interview-questions/docker-containerization.md): 20 คำถาม, Senior - [Kubernetes Basics](https://sharpskill.dev/th/technologies/go/interview-questions/kubernetes-basics.md): 22 คำถาม, Senior - [Go ขั้นสูง](https://sharpskill.dev/th/technologies/go/interview-questions/advanced-go.md): 20 คำถาม, Senior - [การพัฒนา CLI](https://sharpskill.dev/th/technologies/go/interview-questions/cli-development.md): 20 คำถาม, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/th/technologies/go/interview-questions/concurrency-patterns