我有一个异步应用程序,这意味着在任何给定时间都可以有 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/