Hướng dẫn does javascript support multithreading - javascript có hỗ trợ đa luồng không
Hot: Node.js có khả năng thực hiện đa luồng từ phiên bản 13. Giới thiệuHầu hết các nhà phát triển JavaScript trước nay vẫn cho rằng Node.js là luồng đơn - single thread, xử lý nhiều hoạt động bằng các quy trình không đồng bộ và không hỗ trợ đa luồng. Giờ thì điều đó xưa rồi, vì trên phiên bản 13 của Node.js, có một mô-đun mới được gọi là “worker thread” để triển khai đa luồng.
Thực hiệnThông thường trong Node.js, luồng chính xử lý tất cả các hoạt động. Ví dụ dưới đây sẽ trình bày cách tạo thêm một luồng khác để xử lý. Ví dụ này có hai API, API đầu tiên sẽ xử lý chức năng trên luồng chính và API thứ 2 sẽ xử lý chức năng trên một luồng riêng biệt. Đoạn mã dưới đây hiển thị cấu trúc cơ bản của ví dụ.
Bước đầu tiên, ta thêm một function trên luồng chính. Tiếp theo, ta thêm function tương tự trên một luồng khác. Function được sử dụng sẽ là getSum, function này sẽ trả về tổng tích lũy thành giá trị giới hạn được đưa ra dưới dạng đối số. Sau khi thêm hàm getSum vào luồng chính, đoạn mã sẽ giống như bên dưới.
Bước tiếp theo là thêm chức năng tương tự trên một luồng khác và nó có thể thực hiện như sau.
Do đó, một luồng mới được tạo ra từ luồng chính. Chúng ta hãy đặt hàm getSum trên luồng mới được tạo, vì vậy hãy xác định hàm đó trên tệp seprateThread.js. Sau khi xác định, luồng mới sẽ gửi kết quả trở lại luồng chính; kiểm tra mã dưới đây để tham khảo.
Trong ví dụ trên, bạn có thể thấy hàm seprateThread.postMessage () được sử dụng bởi luồng chính để giao tiếp với luồng con. Tương tự như vậy, parentPort.postMessage () được sử dụng bởi luồng con để giao tiếp với luồng chính. Hình dưới đây minh họa giao tiếp giữa con và luồng chính Đặc trưng
Kết luậnĐộng cơ của bài viết này là đưa ra một ý tưởng ngắn gọn về cách triển khai cơ bản của đa luồng trên Node.js. Đa luồng trong Node.js hơi khác một chút so với đa luồng truyền thống. Người ta khuyên rằng đối với hoạt động I / O lớn, luồng chính có thể hoạt động tốt hơn nhiều so với worker thread. Để hiểu thêm về đa luồng, hãy tham khảo tài liệu chính thức của Node.js và mã nguồn của ví dụ có sẵn tại đây.đây. Bài dịch từ PlainEnglishPlainEnglish Tham khảo khoá Lộ trình Node.js 4.5 tháng của TechmasterLộ trình Node.js 4.5 tháng của Techmaster |