Cách hoạt động của concurrency trong Node.js như thế nào?
Cách hoạt động của concurrency trong Node.js như thế nào?
Trong Node.js, tính đồng thời hoạt động dựa trên mô hình sự kiện không chặn (event-driven non-blocking I/O model) và vòng lặp sự kiện (event loop). Mặc dù Node.js hoạt động trên một luồng đơn (single-threaded), nó có thể xử lý nhiều hoạt động I/O một cách đồng thời nhờ vào cách tiếp cận này.
Khi Node.js bắt đầu, nó khởi tạo một vòng lặp sự kiện. Vòng lặp này hoạt động dựa trên một hàng đợi sự kiện (event queue) và thực hiện các nhiệm vụ theo thứ tự FIFO (First In First Out). Nó chỉ thực hiện một nhiệm vụ khi không có nhiệm vụ nào đang diễn ra trong ngăn xếp gọi (call stack). Vòng lặp sự kiện liên tục kiểm tra ngăn xếp gọi để xác định xem có nhiệm vụ nào cần được thực hiện hay không.
Khi vòng lặp sự kiện phát hiện một hàm nào đó, nó sẽ thêm hàm đó vào ngăn xếp và thực hiện theo thứ tự. Các hoạt động I/O như đọc file hoặc gửi yêu cầu mạng không được xử lý trực tiếp trên luồng chính của Node.js. Thay vào đó, những nhiệm vụ này được chuyển giao cho một phần hệ thống riêng biệt gọi là libuv, quản lý các hoạt động I/O cho Node.js. Trong khi những nhiệm vụ này đang được xử lý riêng, Node.js không ngồi chờ chúng hoàn thành mà tiếp tục làm việc với các nhiệm vụ khác, đảm bảo không bị "chặn" bởi bất kỳ nhiệm vụ nào.
Các hàm gọi lại (callbacks) được sử dụng ...
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào