JavaScript, các ngôn ngữ, có thể được như đa luồng như bạn muốn, nhưng embeddings trình duyệt của động cơ javascript chỉ chạy một callback (onload, onfocus, < kịch bản >, vv ...) tại một thời điểm (mỗi tab , có lẽ). Đề xuất của William về việc sử dụng Mutex cho những thay đổi giữa đăng ký và nhận cuộc gọi lại không nên được thực hiện theo nghĩa đen bởi vì điều này, vì bạn sẽ không muốn chặn cuộc gọi lại can thiệp vì cuộc gọi lại sẽ mở khóa sẽ bị chặn sau cuộc gọi lại hiện tại ! (Wow, tiếng Anh hút để nói về luồng.) Trong trường hợp này, bạn có thể muốn làm một cái gì đó dọc theo dòng redispatching sự kiện hiện tại nếu một lá cờ được thiết lập, hoặc theo nghĩa đen hoặc với những thích của setTimeout().
Nếu bạn đang sử dụng tính năng nhúng JS khác nhau và thực thi nhiều luồng cùng một lúc, nó có thể bị xáo trộn hơn một chút, nhưng do cách JS có thể sử dụng gọi lại dễ dàng và khóa các đối tượng truy cập thuộc tính rõ ràng là gần như không cần thiết. Tuy nhiên, tôi sẽ ngạc nhiên nếu một nhúng được thiết kế cho mã chung (ví dụ, kịch bản trò chơi) mà sử dụng đa luồng cũng không cung cấp cho một số nguyên thủy khóa rõ ràng là tốt.
Xin lỗi vì tường văn bản!
Nguồn
2008-11-28 05:47:00
Nope, không mutex hoặc bất kỳ công cụ kiểm soát đồng thời khác trong javascript. Xem [Tại sao không có công cụ kiểm soát đồng thời trong javascript] (http://uzairfarooq.github.io/why-no-concurrency-control-tool-in-javascript/). –