# Tokio & Async I/O (Rust) > Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async I/O ไฟล์/เครือข่าย - 22 คำถามสัมภาษณ์ - Senior - [คำถามสัมภาษณ์: Rust](https://sharpskill.dev/th/technologies/rust/interview-questions.md) ## 1. บทบาทหลักของ runtime Tokio ในแอปพลิเคชัน Rust แบบ asynchronous คืออะไร? **คำตอบ** Runtime Tokio มี executor ที่ทำการ poll futures จนกว่าจะเสร็จสมบูรณ์ นอกจากนี้ยังจัดการ scheduler แบบ multi-thread (โดยค่าเริ่มต้น) เพื่อกระจาย task ไปยังหลาย OS thread รวมถึง reactor สำหรับการดำเนินการ I/O แบบ asynchronous หากไม่มี runtime futures ของ Rust จะไม่ทำอะไรเลยเพราะเป็น lazy โดยค่าเริ่มต้น ## 2. จะเริ่มต้น runtime Tokio ด้วย macro #[tokio::main] ได้อย่างไร? **คำตอบ** Macro #[tokio::main] แปลงฟังก์ชัน async main() ให้เป็นจุดเริ่มต้นแบบ synchronous ที่สร้าง runtime Tokio แบบ multi-thread และเรียกใช้ฟังก์ชัน async มาโครนี้สร้าง boilerplate ที่จำเป็นสำหรับการสร้าง runtime และ block จนกว่า future หลักจะเสร็จสมบูรณ์โดยอัตโนมัติ ## 3. ความแตกต่างระหว่าง #[tokio::main] และ #[tokio::main(flavor = "current_thread")] คืออะไร? **คำตอบ** โดยค่าเริ่มต้น #[tokio::main] จะสร้าง runtime แบบ multi-thread ที่กระจาย task ไปยัง pool ของ worker thread เมื่อใช้ flavor = "current_thread" runtime จะรัน task ทั้งหมดบน thread หลักเท่านั้น ซึ่งมีประโยชน์สำหรับการทดสอบ แอปพลิเคชันที่เรียบง่าย หรือเมื่อต้องหลีกเลี่ยงการแชร์ข้อมูลระหว่าง thread ## มีอีก 19 คำถาม - tokio::spawn() ทำอะไรและคืนค่าเป็นชนิดข้อมูลใด? - ทำไม future ที่ส่งเข้า tokio::spawn() จึงต้องเป็น 'static? สมัครฟรี: https://sharpskill.dev/th/login ## หัวข้อสัมภาษณ์ Rust อื่นๆ - [พื้นฐาน Rust](https://sharpskill.dev/th/technologies/rust/interview-questions/rust-basics.md): 25 คำถาม, Junior - [Ownership & Borrowing](https://sharpskill.dev/th/technologies/rust/interview-questions/ownership-borrowing.md): 22 คำถาม, Junior - [Structs & Enums](https://sharpskill.dev/th/technologies/rust/interview-questions/structs-enums.md): 20 คำถาม, Junior - [การจัดการข้อผิดพลาด](https://sharpskill.dev/th/technologies/rust/interview-questions/error-handling.md): 18 คำถาม, Junior - [คอลเลกชัน](https://sharpskill.dev/th/technologies/rust/interview-questions/collections.md): 20 คำถาม, Junior - [โมดูลและแพ็กเกจ](https://sharpskill.dev/th/technologies/rust/interview-questions/modules-packages.md): 18 คำถาม, Junior - [Traits](https://sharpskill.dev/th/technologies/rust/interview-questions/traits.md): 22 คำถาม, Mid-Level - [Generics](https://sharpskill.dev/th/technologies/rust/interview-questions/generics.md): 20 คำถาม, Mid-Level - [Lifetimes](https://sharpskill.dev/th/technologies/rust/interview-questions/lifetimes.md): 20 คำถาม, Mid-Level - [Iterators & Closures](https://sharpskill.dev/th/technologies/rust/interview-questions/iterators-closures.md): 22 คำถาม, Mid-Level - [Smart Pointers](https://sharpskill.dev/th/technologies/rust/interview-questions/smart-pointers.md): 22 คำถาม, Mid-Level - [Concurrency Basics](https://sharpskill.dev/th/technologies/rust/interview-questions/concurrency-basics.md): 20 คำถาม, Mid-Level - [async/await](https://sharpskill.dev/th/technologies/rust/interview-questions/async-await.md): 22 คำถาม, Mid-Level - [Testing](https://sharpskill.dev/th/technologies/rust/interview-questions/testing.md): 18 คำถาม, Mid-Level - [Cargo & Ecosystem](https://sharpskill.dev/th/technologies/rust/interview-questions/cargo-ecosystem.md): 18 คำถาม, Mid-Level - [Pattern Matching](https://sharpskill.dev/th/technologies/rust/interview-questions/pattern-matching.md): 18 คำถาม, Mid-Level - [มาโคร](https://sharpskill.dev/th/technologies/rust/interview-questions/macros.md): 20 คำถาม, Mid-Level - [Serde และการ Serialization](https://sharpskill.dev/th/technologies/rust/interview-questions/serde-serialization.md): 20 คำถาม, Mid-Level - [Unsafe Rust](https://sharpskill.dev/th/technologies/rust/interview-questions/unsafe-rust.md): 20 คำถาม, Senior - [Trait ขั้นสูง](https://sharpskill.dev/th/technologies/rust/interview-questions/advanced-traits.md): 22 คำถาม, Senior - [Lifetime ขั้นสูง](https://sharpskill.dev/th/technologies/rust/interview-questions/advanced-lifetimes.md): 20 คำถาม, Senior - [Type System](https://sharpskill.dev/th/technologies/rust/interview-questions/type-system.md): 20 คำถาม, Senior - [การเพิ่มประสิทธิภาพ](https://sharpskill.dev/th/technologies/rust/interview-questions/performance-optimization.md): 20 คำถาม, Senior - [Memory Management](https://sharpskill.dev/th/technologies/rust/interview-questions/memory-management.md): 20 คำถาม, Senior - [Web Frameworks](https://sharpskill.dev/th/technologies/rust/interview-questions/web-frameworks.md): 22 คำถาม, Senior - [Database Integration](https://sharpskill.dev/th/technologies/rust/interview-questions/database-integration.md): 20 คำถาม, Senior - [Design Pattern ของ Rust](https://sharpskill.dev/th/technologies/rust/interview-questions/design-patterns.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/rust/interview-questions/tokio-async