Tìm Hiểu Về Event Loop Trong NodeJS - Openplanning

  • Tất cả tài liệu
  • Java
    • Java Basic
    • Java Collections Framework
    • Java IO
    • Java New IO
    • Java Date Time
    • Servlet/JSP
    • Eclipse Tech
      • SWT
      • RCP
      • RAP
      • Eclipse Plugin Tools
    • XML & HTML
    • Java Opensource
    • Java Application Servers
  • Maven
  • Gradle
  • Servlet/Jsp
  • Thymeleaf
  • Spring
    • Spring Boot
    • Spring Cloud
  • Struts2
  • Hibernate
  • Java Web Service
  • JavaFX
  • SWT
  • Oracle ADF
  • Android
  • iOS
  • Python
  • Swift
  • C#
  • C/C++
  • Ruby
  • Dart
  • Batch
  • Database
    • Oracle
    • MySQL
    • SQL Server
    • PostGres
    • Other Database
  • Oracle APEX
  • Report
  • Client
  • ECMAScript / Javascript
  • TypeScript
  • NodeJS
  • ReactJS
  • Flutter
  • AngularJS
  • HTML
  • CSS
  • Bootstrap
  • OS
    • Ubuntu
    • Solaris
    • Mac OS
  • VPS
  • Git
  • SAP
  • Amazon AWS
  • Khác
    • Chưa phân loại
    • Phần mềm & ứng dụng tiện ích
    • VirtualBox
    • VmWare
Tìm hiểu về Event Loop trong NodeJS
  1. Tổng quan về NodeJS Event Loop

1. Tổng quan về NodeJS Event Loop

NodeJS là một ứng dụng đơn luồng (Single Thread), nó hoạt động phía trên một nền tảng được viết bởi C++, nền tảng này sử dụng đa luồng (Multi-Thread) để thực hiện đồng thời các nhiệm vụ.Hình dưới đây minh họa các yêu cầu (request) từ phía các người dùng gửi đến máy chủ NodeJS.Mỗi yêu cầu (request) từ phía người dùng được NodeJS coi là một sự kiện (event), chúng được đặt vào một Event Queue (Hàng đợi sự kiện). NodeJS sử dụng quy tắc FIFO (First In First Out), điều này có nghĩa là những yêu cầu đến trước sẽ được xử lý trước.Event LoopLà một vòng lặp vô tận, nó sẽ chuyển các yêu cầu sang Thread Pool (Bể chứa các luồng), đồng thời mỗi yêu cầu sẽ được đăng ký một hàm Callback. Khi một yêu cầu được xử lý xong, hàm Callback tương ứng sẽ được gọi thực thi.Thread PoolLà một chương trình viết bằng ngôn ngữ C++, nó hỗ trợ đa luồng (Multi Threads), chính vì vậy tại đây các yêu cầu sẽ được xử lý trên các luồng khác nhau. NodeJS cũng hỗ trợ đa tiến trình (Multi Processes), điều này có nghĩa là chúng có thể được thực thi trên các lõi (Core) khác nhau.Khi một yêu cầu được xử lý xong, NodeJS sẽ gọi hàm Callback (Đã được đăng ký cho yêu cầu này) để thực thi nó.CÁC KẾT LUẬN:Kết luận cơ bản thứ nhất: Nếu mỗi kết nối tới Server đều mở ra một luồng (Thread) sẽ rất tốn bộ nhớ. Điều này đã được chứng thực khi bạn so sánh ApacheNginx (Hai Web Server triển khai các ứng dụng PHP). Apache đã tiêu tốn bộ nhớ khủng khiếp hơn rất nhiều so với Nginx.NodeJS giống với Nginx là chúng chỉ sử dụng một luồng đơn (Single thread) để đón tiếp các kết nối từ phía người dùng, và coi mỗi yêu cầu của người dùng là một sự kiện.Kết luận cơ bản thứ hai: Các hoạt động I/O rất tốn tài nguyên của hệ thống, vì vậy NodeJS quản lý chặt chẽ việc sử dụng các hoạt động I/O. Vì vậy bạn chỉ cần sử dụng Callback khi bạn thực thi các nhiệm vụ liên quan tới I/O.Về cơ bản rất nhiều thứ trong NodeJS đang chạy song song trên các luồng khác nhau, nhưng chúng được quản lý trực tiếp bởi NodeJS, chẳng hạn như Thread Pool. Còn những gì bạn viết ra được chạy trên một luồng đơn (single thread).

Các hướng dẫn NodeJS

  • Giới thiệu về NodeJs
  • NPM là gì?
  • Hướng dẫn NodeJS cho người mới bắt đầu
  • Cài đặt trình soạn thảo Atom
  • Cài đặt NodeJS trên Windows
  • Hướng dẫn và ví dụ NodeJS Module
  • Khái niệm Callback trong NodeJS
  • Tạo một HTTP Server đơn giản với NodeJS
  • Tìm hiểu về Event Loop trong NodeJS
  • Hướng dẫn và ví dụ NodeJS EventEmitter
  • Hướng dẫn và ví dụ NodeJS Buffer
  • Kết nối cơ sở dữ liệu MySQL trong NodeJS
Show More

Các hướng dẫn NodeJS

  • Giới thiệu về NodeJs
  • NPM là gì?
  • Hướng dẫn NodeJS cho người mới bắt đầu
  • Cài đặt trình soạn thảo Atom
  • Cài đặt NodeJS trên Windows
  • Hướng dẫn và ví dụ NodeJS Module
  • Khái niệm Callback trong NodeJS
  • Tạo một HTTP Server đơn giản với NodeJS
  • Tìm hiểu về Event Loop trong NodeJS
  • Hướng dẫn và ví dụ NodeJS EventEmitter
  • Hướng dẫn và ví dụ NodeJS Buffer
  • Kết nối cơ sở dữ liệu MySQL trong NodeJS
Show More

Các bài viết mới nhất

  • Xử lý lỗi 404 trong Flutter GetX
  • Ví dụ đăng nhập và đăng xuất với Flutter Getx
  • Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
  • Hướng dẫn và ví dụ Flutter multi_dropdown
  • Hướng dẫn và ví dụ Flutter flutter_form_builder
  • Hướng dẫn và ví dụ Flutter GetX obs Obx
  • Hướng dẫn và ví dụ Flutter GetX GetBuilder
  • Từ khoá part và part of trong Dart
  • Hướng dẫn và ví dụ Flutter InkWell
  • Bài thực hành Flutter SharedPreferences
  • Hướng dẫn và ví dụ Flutter Radio
  • Hướng dẫn và ví dụ Flutter Slider
  • Hướng dẫn và ví dụ Flutter SkeletonLoader
  • Chỉ định cổng cố định cho Flutter Web trên Android Studio
  • Hướng dẫn và ví dụ Flutter SharedPreferences
  • Tạo Module trong Flutter
  • Flutter upload ảnh sử dụng http và ImagePicker
  • Bài thực hành Dart http CRUD
  • Hướng dẫn và ví dụ Flutter image_picker
  • Flutter GridView với SliverGridDelegate tuỳ biến
Show More
  • Các hướng dẫn NodeJS

Từ khóa » đa Luồng Trong Nodejs