Javascript HTML5Web工作者与并发性

Javascript HTML5Web工作者与并发性,javascript,html,web-worker,Javascript,Html,Web Worker,我目前有两个web workers设置如下: gpsThread = new Worker("js/workers/gpsd_poll.js"); gpsStarted = true; gpsThread.onmessage = function(event) { if (event.data !== "") { do lots of stuff here..... } } netThread = new Worker("js/workers/net_pol

我目前有两个web workers设置如下:

gpsThread = new Worker("js/workers/gpsd_poll.js");
gpsStarted = true;

gpsThread.onmessage = function(event) {
    if (event.data !== "") {
         do lots of stuff here.....
    }
}

netThread = new Worker("js/workers/net_poll.js");
netStarted = true;

netThread.onmessage = function(event) {
    if (event.data !== "") {
         do lots of stuff here.....
    }
}
gpsThread = new Worker("js/workers/gpsd_poll.js");
gpsStarted = true;

netThread = new Worker("js/workers/net_poll.js");
netStarted = true;

gpsThread.onmessage = function(event) {
    netThread.onmessage = function(event) {
        if (event.data !== "") {
             do lots of stuff here.....
        }
    }

    if (event.data !== "") {
         do lots of stuff here.....
    }
}
当gpsThread收到消息并进行处理时,netThread必须等到gpsThread完成后才开始回调

有没有办法让它们“同时”运行?我试过这样把它们放在一起:

gpsThread = new Worker("js/workers/gpsd_poll.js");
gpsStarted = true;

gpsThread.onmessage = function(event) {
    if (event.data !== "") {
         do lots of stuff here.....
    }
}

netThread = new Worker("js/workers/net_poll.js");
netStarted = true;

netThread.onmessage = function(event) {
    if (event.data !== "") {
         do lots of stuff here.....
    }
}
gpsThread = new Worker("js/workers/gpsd_poll.js");
gpsStarted = true;

netThread = new Worker("js/workers/net_poll.js");
netStarted = true;

gpsThread.onmessage = function(event) {
    netThread.onmessage = function(event) {
        if (event.data !== "") {
             do lots of stuff here.....
        }
    }

    if (event.data !== "") {
         do lots of stuff here.....
    }
}

网络工作者确实是并发运行的,这是无法防止的。它们只能通过异步事件进行通信。像往常一样,除非使用回调,否则您不能“等待”。请至少向我们显示您向工作人员发送消息的部分。我认为您的意思是“连续”,因为正如@Bergi提到的,它们确实“同时”运行你可以把它们都推到一个共享的worker中,因为你不会因为排队而获得任何MP加速。也许你可以发布某种伪代码/流程图,显示事件的顺序/工作或数据流,以澄清你希望代码如何工作?Web worker是并发运行的,这是无法防止的。它们只能通过异步事件进行通信。像往常一样,除非使用回调,否则您不能“等待”。请至少向我们显示您向工作人员发送消息的部分。我认为您的意思是“连续”,因为正如@Bergi提到的,它们确实“同时”运行你可以把它们都推到一个共享的worker中,因为你不会因为排队而得到任何MP加速。也许你可以发布一些伪代码/流程图,显示事件的顺序/工作或数据流,以澄清你希望代码如何工作?