Mình có 1 hình vẽ minh họa cho event-loop trong NodeJS:

Như trong hình vẽ thì các event được thực thi tuần tự, nghĩa là event này chạy xong thì mới tới event kia.
Mình cũng đã kiểm chứng điều này là đúng bằng cách sau: (code: http://paste2.org/bNU3ZH9d
- Nếu mình vào route "/" thì trình duyệt hiển thị chữ "ok" rất nhanh.
- Nếu mình vào route "/hello" thì trình duyệt loading rất lâu (hết 15s vì mình cho chờ 15s); lúc này thì route "/" cũng không vào được.
=> các event được thực thi tuần tự nhau.
Vậy thì theo mình đánh giá thì event loop không có gì hay ho cả, chẳng qua là nó xử lý từng sự kiện 1 nên có thể chịu được lượng request lớn. Nhưng về hiệu năng thì sẽ giảm rất nhiều nếu 1 event nào đó cần thời gian thực thi lâu.
Ví dụ khi như mình viết 1 trang web cập nhật tỷ giá usd/vnd, euro/vnd... (giả sử tổng thời gian cập nhật tất cả các loại tỷ giá là 30s). Bây giờ có 2 người truy cập vào web của mình, thì người thứ hai phải chờ người thứ nhất có kết quả xong thì mới tới lượt họ.
=> Tổng thời gian để 2 người này có kết quả tỷ giá là ít nhất 60s.
Trong khi đó, nếu chạy đa luồng thì mình có thể cho công việc cập nhật tỷ giá trong luồng con, và các luồng con chạy song song nhau => chỉ mất 30s để cả 2 người xem có được kết quả tỷ giá.
P/s: mình mới tìm hiểu về NodeJS và đang thắc mắc về vấn đề event-loop này; không biết mình hiểu như vậy có đúng không?
Cám ơn mọi người đã đọc 