异步线程阻塞问题,线程1和线程2里面的变量有时会通用,怎么改让不让通用

var p1 = threads.start(function() {
a(1)
toastLog("第一个" + d)
});
var p1 = threads.start(function() {
a(2)
toastLog("第二个" + d)
});

var c

function a(b) {

//sleep(1000)

c = b + 1

d = c + 1

}

在JavaScript中,变量的作用域是由函数决定的,而不是线程。因此,无论是主线程还是子线程,它们都能访问相同的全局变量。如果你希望在不同的线程中使用各自独立的变量,可以考虑使用JavaScript的闭包来达到这个目的。下面是一个修改后的示例代码:

var p1 = threads.start(function() {
    var c; // 在线程1中定义私有变量c
    var d;
    a(1, c);
    toastLog("第一个" + d)
});
var p2 = threads.start(function() {
    var c; // 在线程2中定义私有变量c
    var d;
    a(2, c);
    toastLog("第二个" + d)
});

function a(b, c) {
    c = b + 1; // 在各自的线程中设置局部变量c
    var d = c + 1; // 在函数内部定义局部变量d
    return d; // 返回局部变量d的值
}

在修改后的代码中,我们在每个线程中都定义了私有的变量c和d,这样确保了线程1和线程2里的变量不会相互影响。

通过使用闭包,我们可以确保在不同的线程中使用各自独立的变量,避免了变量通用的问题。希望这个方法能够解决你的问题!