Tại sao JavaScript là đơn luồng và không đồng bộ?

[00. 00. 20] Chỉ ở mức cao nhất nếu bạn thực sự nheo mắt từ độ cao 50.000 feet trở lên. Bạn có thể nhìn vào tính song song và tính không đồng bộ và nói rằng chúng giống nhau không. Có sự khác biệt quan trọng. Vì vậy, hãy để tôi cung cấp cho bạn một cách ẩn dụ làm thế nào để vượt qua điều đó. Song song so với không song song, hiện tại chúng ta sẽ sắp xếp nhóm không đồng bộ thành không song song và tôi sẽ giải thích thêm về điều đó

[00. 00. 43] Vì vậy, sự không song song sẽ giống như bạn đang xếp hàng chờ tàu lượn siêu tốc ở công viên giải trí. Rất nhiều người xếp hàng và cuối cùng bạn cũng đứng đầu hàng. Có một tàu lượn siêu tốc ở đó với 30 chỗ ngồi trên đó nhưng họ chỉ cho phép bạn lên. Và bạn là người duy nhất có thể đi xe tại bất kỳ thời điểm nào

[00. 01. 01] Vì vậy, mặc dù có sức chứa 30 người đi xe, nhưng tại bất kỳ thời điểm nào, chỉ có một người đi xe. Đó sẽ là không song song. Chúng tôi sẽ đưa ra những điều khoản khác nhau trong giây lát. Chúng sẽ không song song so với nếu bạn xếp hàng chờ đợi. Bạn lên đó và sau đó 30 người được đưa lên tàu lượn siêu tốc

[00. 01. 17] Và khi tàu lượn siêu tốc đang chạy, tất cả 30 bạn đều đang trải nghiệm tàu ​​lượn cùng một lúc. Đó là sự song song hơn. Vì vậy, theo nghĩa điện toán, tính song song được thể hiện thông qua các luồng. Phổ biến nhất được thể hiện thông qua các chủ đề. Ý tưởng rằng tôi có thể có một luồng trên một lõi CPU trong hệ thống của mình

[00. 01. 35] Và một chủ đề khác. Chúng giống như hàng đợi các hành động cần xảy ra hoặc các hoạt động và cần phải xảy ra. Tại bất kỳ thời điểm cụ thể nào, một lõi có thể đang thực hiện một trong các hoạt động đó và trong chính thời điểm đó, một hoạt động khác có thể đang diễn ra trên một lõi khác. Đúng

[00. 01. 51] Trung thực với lòng tốt song song. Bây giờ, ngay cả với những cỗ máy mạnh mẽ nhất mà bạn có thể có. Bạn có thể có lõi 16 hoặc có thể bạn có lõi 32. Hầu hết chúng ta có thể có 4, 8 lõi trong máy tính của mình. 32 luồng gần như không đủ để chạy một hệ điều hành hiện đại với các loại công việc, đa nhiệm mà chúng tôi thực hiện khi chạy tất cả các chương trình chúng tôi chạy

[00. 02. 12] Ngay cả trình duyệt của bạn, trình duyệt duy nhất của bạn có thể chiếm 10 hoặc 15 luồng chỉ dành cho các thao tác cơ bản mà nó thực hiện trên một trang web. Vì vậy, nếu bạn đã từng mở Trình quản lý tác vụ của Chrome và thấy tất cả các tiến trình đang chạy, nó sẽ chạy song song rất nhiều thứ

[00. 02. 27] Vì vậy, bởi vì chúng tôi không có số lượng lõi vô hạn, hệ điều hành thực sự có một lớp mà chúng tôi gọi là loại luồng ảo. Và nó đảm nhiệm việc lên lịch cho các luồng ảo. Nó có thể đưa ra hàng chục ngàn trong số đó. Và nó quan tâm đến việc cố gắng lên lịch cho những thứ đó trên các lõi để chúng diễn ra song song và càng nhiều càng tốt

[00. 02. 46] Từ góc độ lập trình của bạn, bạn không thực sự quan tâm đến điều đó hoặc thậm chí không biết chúng đang chạy trên lõi nào. Bạn chỉ cần cho rằng hai thứ này nằm trên các luồng riêng biệt, rằng hệ điều hành sẽ thực hiện đúng và đảm bảo rằng chúng đang chạy riêng biệt. Đúng vậy, rõ ràng tính song song là về tối ưu hóa, phải không?

[00. 03. 02] Nếu tôi có nhiều việc phải làm. Tôi không muốn chờ đợi để hoàn thành nhóm nhiệm vụ thứ hai cho đến khi nhóm nhiệm vụ đầu tiên hoàn thành, nếu có thể làm cả hai cùng một lúc, nếu tôi có thể hoàn thành nhanh hơn thì tốt hơn nhiều. Song song là về tối ưu hóa

[00. 03. 16] Được rồi, vậy điều đó giải thích sự song song. Còn về sự không đồng bộ thì sao? . Lập trình bên trong JavaScript của chúng tôi chạy hoàn toàn trên một luồng duy nhất mặc dù trình duyệt có thể có quyền truy cập vào nhiều luồng và thậm chí nút công cụ JavaScript chẳng hạn có thể sử dụng hàng trăm luồng trong nền

[00. 03. 37] Nhưng chương trình của chúng tôi chỉ chạy trong một luồng duy nhất. Tại bất kỳ thời điểm cụ thể nào, chỉ có một dòng JavaScript chạy trong công cụ JavaScript. Về lý thuyết, bạn có thể sử dụng nhiều phiên bản của công cụ JavaScript trên các luồng hoàn toàn riêng biệt và vâng, điều đó sẽ giống như lập trình đa luồng nhưng chúng không thể giao tiếp theo bất kỳ cách hữu ích nào

[00. 03. 59] Công nhân web là một ví dụ về việc cố gắng thu hẹp khoảng cách đó. Công nhân web là một cách tạo ra một luồng hoàn toàn riêng biệt nhưng đó không phải là thứ JavaScript, đó là thứ của trình duyệt. Nền tảng web xác định khái niệm về công nhân web. Xuất hiện trong một luồng hoàn toàn riêng biệt, một phiên bản hoàn toàn riêng biệt của công cụ JavaScript

[00. 04. 17] Vì JavaScript có liên quan, hai thứ đó không biết về nhau, chúng không có bất kỳ sự chồng chéo nào, chúng không chia sẻ các biến, không có gì. Tin tốt là, chúng ta không phải lo lắng về bất kỳ điều vô nghĩa nào liên quan đến lập trình theo luồng. Chúng tôi không phải đối phó với các loại thuế và semaphores mới cũng như tất cả sự điên rồ và khóa tài nguyên được chia sẻ

[00. 04. 34] Chúng tôi biết rằng chỉ có một chức năng có thể chạy trong một thời gian nhất định. Và nếu bạn có hai công cụ JavaScript riêng biệt đang chạy, điều đó không thành vấn đề vì dù sao thì chúng cũng sẽ không hoạt động trên cùng một không gian dùng chung. Giờ đây, may mắn thay, các công nhân web đã cung cấp cho chúng tôi một đường dẫn liên lạc thông qua các sự kiện không đồng bộ

[00. 04. 51] Vì vậy, mặc dù chúng đang hoạt động chức năng trên các luồng độc lập. Họ không thể giao tiếp theo kiểu luồng, họ phải liên lạc lại trên khái niệm luồng đơn đó thông qua vòng lặp sự kiện

Tại sao JavaScript được gọi là luồng đơn?

Trong bối cảnh lập trình, Parallelism là việc sử dụng nhiều luồng trong một hệ điều hành. Các quy trình có thể chạy cùng lúc bất kể thứ tự thực hiện. Tuy nhiên, JavaScript là một luồng đơn và chỉ có thể thực thi một dòng mã tại bất kỳ thời điểm nào .

Tại sao JavaScript không đồng bộ hoặc đồng bộ?

Javascript là ngôn ngữ đơn luồng đồng bộ nhưng với sự trợ giúp của vòng lặp sự kiện và lời hứa, JavaScript được sử dụng để lập trình không đồng bộ . Trong bài viết này, chúng ta đã thảo luận về javascript đồng bộ và không đồng bộ với sự trợ giúp của các ví dụ mã hóa.

Tại sao JavaScript được gọi là không đồng bộ?

Lập trình không đồng bộ là một kỹ thuật cho phép chương trình của bạn bắt đầu một tác vụ có khả năng chạy lâu và vẫn có thể đáp ứng các sự kiện khác trong khi tác vụ đó chạy, thay vì phải . Khi nhiệm vụ đó đã hoàn thành, chương trình của bạn sẽ hiển thị kết quả. . Once that task has finished, your program is presented with the result.

Tại sao nút js là một luồng và không đồng bộ?

Nút. js là Đơn luồng, tôi. e. nó thực thi mã theo một trình tự hoặc hướng duy nhất. Tại một thời điểm nhất định, chỉ có một tác vụ/cuộc gọi được thực thi. Không đồng bộ và đơn luồng. Việc thực thi không đợi yêu cầu hiện tại hoàn tất mà chuyển sang yêu cầu/cuộc gọi tiếp theo .