Synchronous กับ Asynchronous แบบคนทั่วไปเข้าใจได้

synchronous กับ asynchronous คือรูปแบบการทำงานของชุดคำสั่งที่เราเขียนขึ้นมาใน โค๊ดของเรา

ในการทำงานในรูปแบบของ synchronous นั้น การทำงานจะเป็นลำดับขั้นตอน ชุดคำสั่งไหนมาก่อนให้ทำก่อน เป็นลำดับขั้นตอนไป

ส่วนแบบ asynchronous การทำงานจะไม่เป็นลำดับขั้นตอน ชุดคำสั่งจะทำงานพร้อมกัน คำสั่งไหนเสร็จก่อนจะโชว์ผลลัพธ์ก่อน

synchronous เปรียบเสมือน เรามีลูกน้องอยู่นึงคน ถ้าสมมุติเรามี งานที่ต้องมอบหมาย ให้ไปทำคือ รดน้ำต้นไม้ ไปจ่ายตลาด ไปซักผ้า
ลูกน้องคนนั้นจะต้องทำงานทีละอย่าง รดน้ำต้นไม้ใช้เวลา 30นาที ถึงจะไปจ่ายตลาด จ่ายตลาดต่อ ใช้เวลาอีก 1ชั่วโมงเสร็จแล้วถึงจะไปซักผ้าได้ ซักผ้าใช้เวลาอีก 1ชั่วโมง แสดงว่ากว่างานทั้งหมดจะเสร็จจะต้องใช้เวลาทั้งหมดถึง 2ชั่วโมงครึ่ง

สำหรับ Asynchronous เปรียบเสมือน เรามีลูกน้องอยู่หลายคน ในรูปแบบงานที่เหมือนกับตัวอย่างเมื่อกี้ คือ รดน้ำต้นไม้ ไปจ่ายตลาด ไปซักผ้า เราสามารถ แบ่งงานให้ ลูกน้องคนนึงไปลดน้ำต้นไม้ อีกคนไปจ่ายตลาด อีกคนไปซักผ้าได้ ดังนั้นจะเห็นได้ว่า งานที่มีทั้งหมดจะถูกทำเสร็จ ใช้เวลาเพียง 1ชั่วโมงเท่านั้น เพราะงานแต่ละงานถูกทำพร้อมๆกัน ไม่ต้องรอให้งานนึงเสร็จก่อนถึงจะทำอีกงานนึงได้

จะเห็นได้ว่า การทำงานแบบ asynchronous performance จะดีกว่าแบบ synchronous อยู่พอสมควร แต่ว่ายังมีจุดอ่อนอยู่อย่างนึงคือ…..

ถ้างานแต่ละงานมันเกี่ยวเนื่องกันเช่น หาฟืน จุดไฟ ต้มน้ำ
การทำงานมันต้องเป็นไปตามลำดับขั้น คือ จะต้มน้ำได้ ต้อง จุดไฟก่อน จะจุดไฟได้ก็ต้องไปหาฟืนมาก่อน

asynchronous จึงไม่สามารถทำงานที่เป็นลำดับขั้นได้ ซึ่งอันนี้จะเป็นข้อเสียของ asynchronous โดยจะมีวิธีแก้ โดย อันดับแรก ที่เข้ามาจัดการเรื่องงานที่ต้องการลำดับขั้นคือ Callback ซึ่งเราจะไปพูดกับในครั้งต่อไป

ขอขอบคุณข้อมูลจาก:
https://medium.com/@taresupakon/synchronous-%E0%B8%81%E0%B8%B1%E0%B8%9A-asynchronous-%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%84%E0%B8%99%E0%B8%97%E0%B8%B1%E0%B9%88%E0%B8%A7%E0%B9%84%E0%B8%9B%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2%E0%B9%83%E0%B8%88%E0%B9%84%E0%B8%94%E0%B9%89-6ba4198eeef1

Write a comment