Grand Central Dispatch in Swift 3: A quick look
Multi-threading และการทำงานแบบ Concurrency เป็นอีกเรื่องสำคัญในการเขียนโปรแกรมสมัยใหม่ และแน่นอนถ้าพูดถึงเรื่องนี้บน Apple Platform สิ่งแรกที่เรานึกถึงกันคงจะเป็น Grand Central Dispatch ซึ่งเป็น C-style API ที่อยู่กับเรามาช้านาน แค่อยู่บน Objective-C ก็ไม่สวยแล้ว พอยิ่งมาอยู่ภาษาสมัยใหม่อย่าง Swift ยิ่งรู้สึกไม่เป็นมิตรใหญ่ที่ต้องมาเขียน C-style แบบนี้ (จริงๆ ก็มี NSOperationQueue มาให้ตั้งนานแล้วนะ แต่ส่วนตัวก็ยังไม่ชินกับมันอยู่ดี) พอมาใน Swift 3 นั้น Apple ได้ยกเครื่อง libdispatch (อีกชื่อเรียกผ่าน Clang Foundation) หรือ Grand Central Dispatch ที่เราเคยรู้จักใหม่ทั้งหมด ซึ่งวันนี้จะมา Overview ให้ดูคร่าวๆ ว่าหน้าตาเปลี่ยนไปแค่ไหนบ้าง (ผมเคยกล่าวคร่าวๆ ไว้แล้วที่ ภาพรวมความเปลี่ยนแปลงของ Swift 3 ) dispatch_async สำหรับ API ตัวนี้ เมื่อก่อนเราต้องกำหนดวิธีการก่อนว่า เราจะสั่งให้งานที่เรากำลังจะทำเป็นแบบ synchronus หรือ asynchronus จากนั้นค่อยเลือกว่าจะให้ queue ตัวไหนเป็นคนจัดการ แต่ของใหม่จะกลับกระบวนการกัน โดยที่เราสร้าง queue ขึ้นมาก่อนแล้วค่อยจัดการเรื่องวิธีการ...