Apple ได้นำพาราไดม์ใหม่ที่ชื่อว่า Concurrency มาใส่ไว้ใน Swift โดยจัดการการประมวลผลแบบอะซิงโครนัสผ่านคำสั่ง for-await-in
เดิมที Swift จัดการงานอะซิงก์โดยใช้ Closure (Block function) ต่อมาก็มีเฟรมเวิร์กชื่อ Combine ออกมาด้วย ซึ่งเฟรมเวิร์ก Combine นี้ก็เป็นการที่ Apple สร้าง RX ของ Erik Meijer ขึ้นมาในแบบของตัวเอง
แต่ปัญหาของทั้งสองวิธีข้างต้นคือข้อจำกัดของ ARC ซึ่งเป็นวิธีจัดการหน่วยความจำของ Swift เนื่องจากสิ่งที่เรียกว่า capture list อาจทำให้เกิด memory leak ได้ กล่าวคือ Apple ต้องการหลีกเลี่ยงแนวทางที่ใช้ Closure ดังนั้นเหมือนกับที่ Erik Meijer สร้าง Reactive ขึ้นมาด้วยการกลับด้าน iterable (Sequence) กับ Iterator นั้น Apple เลือกที่จะไม่กลับด้าน แต่ทำให้มันเป็นอะซิงก์แทน โดยสร้าง AsyncSequence (AsyncIterable) และ AsyncIterator ขึ้นมา เพื่อแก้ปัญหา memory leak ไปพร้อมกับนำเสนอพาราไดม์ใหม่ของการประมวลผลแบบอะซิงโครนัส
ยังไม่มีความคิดเห็น