0Pricing
Dart Academy · บทเรียน

การสร้างไอโซเลตและการส่งข้อความ

สื่อสารผ่าน SendPort และ ReceivePort

การสร้างไอโซเลตและการส่งข้อความ เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

จัดการด้วยตนเอง

สำหรับ worker ที่ทำงานเป็นเวลานานและต้องสื่อสารบ่อย ๆ ให้สร้างไอโซเลตด้วย Isolate.spawn ด้วยตนเอง วิธีนี้ทำให้คุณควบคุมอายุการทำงานทั้งหมดของมันได้

จุดเริ่มต้น

Isolate.spawn ต้องใช้ ฟังก์ชันระดับบนสุด เป็นจุดเริ่มต้น พร้อมอาร์กิวเมนต์หนึ่งค่าเพื่อส่งให้ฟังก์ชันเมื่อเริ่มทำงาน

Isolate.spawn(worker, message);

ทำความรู้จัก ReceivePort

ReceivePort คือกล่องจดหมายของคุณ คุณใช้ listen กับมันเพื่อรับข้อความที่ไอโซเลตอื่นส่งมาให้ 📥

final port = ReceivePort();
port.listen((msg) => print(msg));

ทำความรู้จัก SendPort

ReceivePort ทุกตัวจะแสดง SendPort ออกมา ผู้ที่ถือ SendPort นั้นอยู่สามารถส่งข้อความเข้ากล่องจดหมายของคุณได้

final SendPort tx = port.sendPort;

ส่งต่อพอร์ต

เมื่อต้องการเริ่มสื่อสาร ให้ส่ง SendPort ให้ไอโซเลตใหม่เป็นอาร์กิวเมนต์สำหรับการสร้าง ตอนนี้ไอโซเลตก็รู้แล้วว่าจะตอบกลับที่ใด

Isolate.spawn(worker, port.sendPort);

Worker ตอบกลับ

ภายใน worker ให้ใช้ SendPort ที่ได้รับมาเพื่อ send ผลลัพธ์กลับไปยังไอโซเลตหลัก

void worker(SendPort tx) {
  tx.send('done');
}

การจับมือทักทาย

รูปแบบที่ใช้กันทั่วไปคือ การจับมือทักทายแบบสองทาง โดย worker จะส่ง SendPort ของตัวเองกลับมาก่อน เพื่อให้ทั้งสองฝ่ายส่งข้อความถึงกันได้

ข้อมูลที่ส่งได้เท่านั้น

ข้อความต้องเป็นข้อมูลที่ ส่งได้ เช่น ตัวเลข สตริง รายการ แผนที่ และ SendPorts สิ่งต่าง ๆ อย่างไฟล์ที่เปิดอยู่หรือฟังก์ชันไม่สามารถข้ามขอบเขตนี้ได้

อ่านคำตอบกลับ

เมื่อกลับมายังโปรแกรมหลัก callback ของ listen ใน ReceivePort จะทำงานเมื่อมีคำตอบแต่ละรายการเข้ามา จัดการคำตอบตามลำดับที่ได้รับ

ปิดพอร์ต

เมื่อทำงานเสร็จแล้ว ให้เรียก port.close() การปล่อย ReceivePort ไว้จะทำให้โปรแกรมยังทำงานต่อ ดังนั้นการปิดพอร์ตจะช่วยให้โปรแกรมจบการทำงานได้อย่างเรียบร้อย

ยุติไอโซเลต

เก็บข้อมูลอ้างอิงของ Isolate ไว้ แล้วเรียก isolate.kill() เพื่อหยุด worker ที่ไม่ต้องการอีกต่อไป ควรคืนทรัพยากรของมันโดยเร็ว

ตรวจสอบอย่างรวดเร็ว

คุณต้องใช้พอร์ตใดเพื่อรับฟังข้อความ

ทบทวน

สร้างไอโซเลตด้วย Isolate.spawn จากนั้นส่ง SendPort เพื่อให้ไอโซเลตสื่อสารกันได้ ส่งเฉพาะข้อมูลที่ส่งได้ และปิดพอร์ตเมื่อทำงานเสร็จ ✅

คำถามที่พบบ่อย

บทเรียน “การสร้างไอโซเลตและการส่งข้อความ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้างไอโซเลตและการส่งข้อความ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างไอโซเลตและการส่งข้อความ”

สื่อสารผ่าน SendPort และ ReceivePort คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้างไอโซเลตและการส่งข้อความ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม

ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงใช้ Isolate แทนเธรด
  2. Isolate.run สำหรับย้ายงานอย่างรวดเร็ว
  3. การสร้างไอโซเลตและการส่งข้อความ
  4. งานคำนวณหนักโดยไม่ทำให้หน้าจอกระตุก
← กลับไปที่ Dart Academy