javascript - N个异步线程的互斥

标签 javascript multithreading asynchronous

我有一个异步应用程序,这意味着在任何给定时间都可以有 N 个事件。是否有一种已知的算法可以对 N 个线程进行互斥,而无需对每个线程进行硬编码以具有 ID?

最佳答案

我不认为 Javascript 本身有对象锁定——因为 Javascript 基本上是单线程的。您也许能够找到运行多个 Javascript 代码线程的库或实现 - 但它们是否都在相同的变量空间中运行?他们将需要以某种方式相互沟通。

假设您的多个线程可以以某种方式共享静态mutex 变量,并且只要您假设 '++' 被认为是执行线程的系统的原子操作,这个怎么样?

int mutex = 0;
mutuallyExclusiveOperation(){
  succeed=false;
  while(!succeed){
    while(mutex>0){ sleep();  }
    m=mutex++;   //"Simultaneously" read and increment
    if(m>0)mutex--;
    else{
      doMutuallyExclusiveThing();
      succeed=true;
      mutex--;
    }
 }
}

关于javascript - N个异步线程的互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693550/

相关文章:

javascript - Bluebird JS : Make a function run in parallel

asynchronous - Tornado 能否以非阻塞异步方式与 Cassandra 通信?

javascript - 向数组(内置对象)添加自定义方法时的最佳实践

javascript - 无法获得 GET 请求 axios 的响应

使用 LinkedBlockingQueue 时的 Java 内存泄漏

java - 我应该使用这两种方法中的哪一种来正确停止计划线程?

php - PDO非锁定查询: possible?

javascript - 垂直构建页面的水平滚动行为

javascript - html setCustomValidity oninvalid 和 oninput 解释

java - 为什么这段代码会产生死锁?