Nhóm chủ đề như thế nào và ai đã sử dụng:
Đầu tiên khi chúng ta sử dụng / cài đặt Node trên máy tính, nó sẽ bắt đầu một quá trình trong số các quá trình khác được gọi là quá trình nút trong máy tính và nó sẽ tiếp tục chạy cho đến khi bạn giết nó. Và quá trình đang chạy này được gọi là luồng đơn của chúng tôi.
Vì vậy, cơ chế của một luồng nó dễ dàng chặn một ứng dụng nút nhưng đây là một trong những tính năng độc đáo mà Node.js mang lại. Vì vậy, một lần nữa nếu bạn chạy ứng dụng nút của mình, nó sẽ chỉ chạy trong một luồng duy nhất. Không có vấn đề nếu bạn có 1 hoặc hàng triệu người dùng truy cập vào ứng dụng của bạn cùng một lúc.
Vì vậy, hãy hiểu chính xác những gì sẽ xảy ra trong chuỗi đơn của nodejs khi bạn khởi động ứng dụng nút của mình. Lúc đầu chương trình được khởi tạo, sau đó tất cả mã cấp cao nhất được thực thi, có nghĩa là tất cả các mã không nằm trong bất kỳ hàm gọi lại nào ( hãy nhớ tất cả các mã bên trong tất cả các hàm gọi lại sẽ được thực thi theo vòng lặp sự kiện ).
Sau đó, tất cả các mã mô-đun được thực thi rồi đăng ký tất cả các lệnh gọi lại, cuối cùng, vòng lặp sự kiện bắt đầu cho ứng dụng của bạn.
Vì vậy, như chúng ta đã thảo luận trước khi tất cả các hàm gọi lại và mã bên trong các hàm đó sẽ thực thi trong vòng lặp sự kiện. Trong vòng lặp sự kiện, các tải được phân phối theo các giai đoạn khác nhau. Dù sao, tôi sẽ không thảo luận về vòng lặp sự kiện ở đây.
Để hiểu rõ hơn về Thread pool, tôi yêu cầu bạn tưởng tượng rằng trong vòng lặp sự kiện, các mã bên trong một hàm gọi lại thực thi sau khi hoàn thành việc thực thi các mã bên trong một hàm gọi lại khác, bây giờ nếu có một số tác vụ thực sự quá nặng. Sau đó, họ sẽ chặn luồng đơn nodejs của chúng tôi. Và vì vậy, đó là nơi luồng luồng đi vào, giống như vòng lặp sự kiện, được cung cấp cho Node.js bởi thư viện libuv.
Vì vậy, nhóm luồng không phải là một phần của bản thân nodejs, nó được cung cấp bởi libuv để giảm tải các nhiệm vụ nặng nề cho libuv và libuv sẽ thực thi các mã đó trong các luồng của chính nó và sau khi thực thi libuv sẽ trả về kết quả cho sự kiện trong vòng lặp sự kiện.
Nhóm luồng cung cấp cho chúng ta bốn luồng bổ sung, những luồng này hoàn toàn tách biệt với luồng đơn chính. Và chúng tôi thực sự có thể cấu hình nó lên đến 128 luồng.
Vì vậy, tất cả các chủ đề này cùng nhau tạo thành một nhóm chủ đề. và vòng lặp sự kiện sau đó có thể tự động giảm tải các tác vụ nặng vào nhóm luồng.
Phần thú vị là tất cả những điều này diễn ra tự động ở hậu trường. Không phải chúng tôi là các nhà phát triển quyết định cái gì đi vào nhóm luồng và cái gì không.
Có nhiều tác vụ được đưa vào nhóm luồng, chẳng hạn như
-> All operations dealing with files
->Everyting is related to cryptography, like caching passwords.
->All compression stuff
->DNS lookups