Здравствуйте!
есть проблема...похоже с синхронизацией worker`ов.
привожу код клиента:
var workers = [];
    for (var i = 0; i < 3; i++) {
        var worker = new Worker('/myscript');
        worker.onmessage = function (data) {
            console.log(data);
        }
    }
    for (var g = 0; g < worker.length; g++) {
        workers[g].postMessage('start');
    }
и код файла myscript, то есть код worker`а:
var myWorker = (function (workerWindow) {
    var myWorker = function () {
        this.initEvents();
    };
    myWorker.prototype.log = function (message) {
        workerWindow.postMessage(message);
    };
    myWorker.prototype.get = function () {
        var XmlHttp = new XMLHttpRequest();
        XmlHttp.open('GET', myURL, false);
        XmlHttp.send(null);
        if (XmlHttp.status == 200) {
            var packet = JSON.parse(XmlHttp.responseText);
            this.log('packet id: ' + packet.id);
        }
    };
    myWorker.prototype.initEvents = function () {
        var self = this;
        workerWindow.addEventListener('message', function () {
            self.get();
        })
    };
}(this));
var ww = new myWorker(this);
В этом коде 3 воркера должны отправить запрос на сервер, получить ответ числом(изначально 0, инкрементится при каждом новом запросе на сервер) и вывести его. Вот только на сервер приходит всего 1 запрос, который и получают все 3 воркера, а вывод соответственно получатся такой:
packet id: 0
packet id: 0
packet id: 0
хотя по логике должно быть:
packet id: 0
packet id: 1
packet id: 2
думал, что дело может в том, что функция get находится в прототипе, однако если перенести ее в конструктор и убрать из прототипа ничего не меняется(
подскажите пожалуйста, где у меня тут ошибка? 
Спасибо большое.