Tóm Tắt
Đồng bộ và bất đồng bộ là gì?
Chào các bạn,
Khi code đến 1 ngưỡng nào đó, bạn cũng sẽ gặp vấn đề này và sẽ tự đặt ra câu hỏi:
Đồng bộ và bất đồng bộ là gì? Nó có tác dụng ra sao và hỗ trợ mình về việc gì trong dự án?
Mình xin giải thích đơn giản luôn nhé 😀
Về ví dụ thực tế, mình lấy ví dụ ta sẽ nấu ăn với trứng và cơm nhé.
1/ Đồng bộ (sync –
synchronous
)
Là loại mà ta thường hay code nhất từ thuở sơ khai cho đến bây giờ.
Đồng bộ chính là chạy từ đầu đến cuối theo code mà ta viết(chạy tuần tự).
Quy trình đồng bộ:
- Ta đặt ra 1 statement
- Ta đợi cho nó thực hiện tuần tự cho nó xong hết
- Và ta mới qua 1 statement khác
VD đoạn code:
int a = 0; int b = 1; int c = 2; int kq = a + b; int kq2 = c + b;
Thì với đoạn code này như ta đã học qua, nó sẽ chạy từ đầu đến cuối là khởi tạo a, b, c, sau đó tính kq trước rồi tới kq2 và kết thúc.
Đồng bộ chính là chạy tuần tự từ trên xuống dưới theo mình viết, và nó sẽ chỉ thực hiện duy nhất trong 1 thread(luồng).
VD thực tế: Bạn chiên trứng, xong bạn mới bắt đầu nấu cơm. Kết thúc bạn sẽ bắt đầu ăn.
2/ Bất đồng bộ (async –
asynchronous
)
Đây là 1 loại khác rất là hay và độc đáo và nó khác so với đồng bộ rất nhiều.
Bất đồng bộ là ta sẽ đặt ra job nào đó thực hiện riêng, và trong lúc nó thực hiện riêng, ta sẽ làm công việc khác.
Quy trình:
- Ta đặt ra 1 statement
- Trong lúc ta đợi cho nó hoàn thành, ta có thể qua làm 1 task khác
- Và sau khi nó hoàn thành, ta chạy callback function để lấy kết quả
Điều này có nghĩa trong 1 số dạng task, ta có thể giảm bớt được thời gian xử lý khi sử dụng bất đồng bộ vì ta đã giảm thiểu được thời gian chờ đợi 1 task nào đó hoàn thành.
Bất đồng bộ cũng chỉ sử dụng trong 1 thread(luồng)
VD thực tế: Bạn chiên trứng, đặt thời gian(callback), bạn cũng nấu cơm, đặt thời gian. Trong lúc nó nấu, bạn dọn dẹp bếp hay làm abcxyz gì đó. Sau khi nấu xong, bạn bắt đầu ăn cả 2.
3/ Kết luận
Vậy đối với 2 loại và tùy trường hợp, tình huống khác nhau, ta sẽ sử dụng nó đúng lúc và đúng thời điểm để được performance tốt nhất cũng như kiểm soát được quy trình, dữ liệu của phần mềm.
Mình xin kết thúc bài “Đồng bộ và bất đồng bộ là gì?” tại đây 😀
Cám ơn các bạn đã quan tâm theo dõi! 😀