Hỏi về concept Agent trong Javascript

Mình thì mới tiếp xúc với JS gần đây! Sau khi hiểu cú pháp cơ bản của JS thì mình tìm đọc các core cocept của ngôn ngữ này (link bên dưới nhé!). Hiện mình chưa hình dung được concept về Agent trong JS. Bạn nào có thể giải thích giúp mình với! Mình xin cảm ơn rất nhiều! :blush:

JavaScript là single thread, nghĩa là khi vào hosting environment chỉ có 1 thread duy nhất chạy JS.

Để có thể chạy multithread trong JS, mỗi thread là 1 JavaScript code, thì ECMAScript đưa ra giải pháp là Worker (agent). Mỗi worker là 1 thread riêng, chạy song song với main thread (nếu CPU nhiều core).

Tuy nhiên, một số browser không hỗ trợ Worker nên sẽ có polyfill giả lập cách hoạt động của Worker theo cơ chế Event Loop, tất cả workers lúc này đều chạy chung trong 1 thread.

Hosting Environment có thể là browser (Chrome, Safari, Opera,…), NodeJS, Office,…


Bonus: nếu hosting environment là NodeJS vẫn có thể chạy multithread thông qua thread pool, 1 thread là JS code chạy bởi v8, các thread còn lại là C++ được gọi từ JS thread thông qua binding.

3 Likes

Cảm ơn bạn nhiều nhé!

Mình cũng mới hiểu tạm tạm! Do mới đọc và chưa ứng dụng nên chưa hình dung rõ lắm!

Ké luôn là nếu có thể chia các worker hoạt động độc lập với nhau thì ok, nhưng nếu gặp nhu cầu cần chia sẻ chung một lượng lớn dữ liệu giữa các worker ngay khi chúng hoạt động (CPU bound + shared memory, preemptive multitasking) thì có lẽ đã đến lúc đổi sang C++, C# hoặc Java, Kotlin là vừa.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?