Bằng JavaScript, bạn có vẻ là ECMAScript.
Đã có đa luồng trong trình duyệt, được xây dựng với webworkers và dựa trên sự cô lập dữ liệu mạnh mẽ: công nhân chỉ giao tiếp bằng cách gửi tin nhắn, không có gì được chia sẻ.
Nếu bạn muốn đa luồng phức tạp hơn, với chia sẻ dữ liệu, thì hiện tại không thể xem được. Không có gì trong ECMAScript explicitely cấm đa luồng nhưng bạn không thể làm mà không multithreading
- cơ sở vật chất để tạo ra "chủ đề" (theo nghĩa chung, đó có thể coroutines)
- mutexes và cơ sở vật chất đồng bộ truy cập
- một hỗ trợ mức thấp để đảm bảo ví dụ thay đổi thuộc tính sẽ không phá vỡ dữ liệu trong trường hợp truy cập đồng thời. Không có động cơ hiện tại nào được thiết kế với loại cường độ này (có, một vài trong số chúng hỗ trợ nhiều luồng nhưng trong sự cô lập).
Thực tế ECMAScript không được thiết kế để bao gồm đa luồng là đủ để ngăn chặn, hiện tại, để hỗ trợ nó (khác hơn là truyền thông điệp bị cô lập đa luồng như đã được thực hiện nhưng đó là một loại rất hạn chế của đa luồng).
Bạn phải nhận ra rằng
- chia sẻ dữ liệu đa luồng là rất tốn kém (thậm chí không nói về những hành động đồng thời trên DOM)
- bạn sẽ hiếm khi sử dụng nó trong JavaScript
Tại sao tôi nói bạn hiếm khi sử dụng nó? Bởi vì hầu hết các tác vụ chặn IO (đọc tệp, yêu cầu, truy vấn db, v.v.), hầu hết các tác vụ ở mức thấp (ví dụ giải mã hình ảnh hoặc hiển thị trang), hầu hết quản lý giao diện người dùng (với hàng đợi sự kiện), hầu hết lập kế hoạch (thời gian chờ và khoảng thời gian) được thực hiện bên ngoài cho bạn.
Nguồn
2013-07-09 07:54:49
Điều này có thể có liên quan http://stackoverflow.com/questions/30036/javascript-and-threads Tôi đoán không có gì trong chính ngôn ngữ đó sẽ vô hiệu hóa bạn khi tạo trình thông dịch đa luồng – fsw