27.01.2014, 14:32
|
Профессор
|
|
Регистрация: 12.04.2010
Сообщений: 557
|
|
Сообщение от javandernufirzam
|
я могу просто вставить такой кусок кода и всё - готовое решение
|
в принципе да, должно работать
function workerFromCode(code) {
var blob = new Blob([code],{type: "text/javascript"});
var ref = URL.createObjectURL(blob);
var worker = new Worker(ref);
URL.revokeObjectURL(ref);
return worker;
}
Сообщение от javandernufirzam
|
скажи что такое Blob пжста
|
основная сущность FileAPI, для различных целей.
содержит внутри себя массив байтов. Может быть отправлен на сервер через XHR, сохраняться в FileSystem, либо применяться как источник данных (вместе с URL createObjectURL/revokeObjectURL) для src картинок, фреймов, href ссылок - т.е. вместо ссылки на серверный http-ресурс
|
|
27.01.2014, 14:35
|
Интересующийся
|
|
Регистрация: 27.01.2014
Сообщений: 18
|
|
спасибо!
если знаком с многопоточным программированием на десктопе - скажи, какая разница есть принципиальная
|
|
27.01.2014, 14:57
|
Профессор
|
|
Регистрация: 12.04.2010
Сообщений: 557
|
|
Сообщение от javandernufirzam
|
если знаком с многопоточным программированием на десктопе - скажи, какая разница есть принципиальная
|
принципиальная - нет объектов синхронизации, таких как мютексы, критические секции и прочие семафоры.
воркеры - это чисто вычислительные потоки, лишенные доступа к UI. для взаимодействия с UI они используют очередь сообщений основного потока, закидывая туда команды функцией postMessage и получая оттуда команды через onmessage - этот механизм эквивалентен виндовой "очереди сообщений", в которую попадают события для окон.
|
|
27.01.2014, 15:04
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от Яростный Меч
|
var code = 'postMessage(123);';
var blob = new Blob([code],{type: "text/javascript"});
var ref = URL.createObjectURL(blob);
var worker = new Worker(ref);
worker.onmessage = function (oEvent) {
alert("data from worker: " + oEvent.data);
};
URL.revokeObjectURL(ref);
|
Удобнее использовать toString у функций.
function foo() {
...
}
var blob = new Blob([foo.toString()], {type: "text/javascript"});
|
|
27.01.2014, 15:11
|
Интересующийся
|
|
Регистрация: 27.01.2014
Сообщений: 18
|
|
Сообщение от Яростный Меч
|
принципиальная - нет объектов синхронизации, таких как мютексы, критические секции и прочие семафоры.
|
- вот я об этом.
отсутствие перечисленных штуковин чего лишает меня в жизни?
что я без них совсем не смогу сделать и жизнь моя на десктопе будет печальной
то есть если я на десктопе обойдусь архитектурой из js
Цитата:
|
Взаимодействие c помощью передачи сообщений: на каждом процессоре многопроцессорной системы запускается однопоточный процесс, который обменивается данными с другими процессами, работающими на других процессорах, с помощью сообщений. Процессы создаются явно, путем вызова соответствующей функции операционной системы, а обмен сообщениями - с помощью библиотеки (например, реализация протокола MPI), или с помощью средств языка (например, High Performance Fortran, Erlang или occam). Обмен сообщениями может происходить асинхронно, либо c использованием метода «рандеву», при котором отправитель блокирован до тех пор, пока его сообщение не будет доставлено. Асинхронная передача сообщений может быть надёжной (с гарантией доставки) либо ненадёжной[3].
Параллельные системы, основанные на обмене сообщениями, зачастую более просты для понимания, чем системы с разделяемой памятью, и обычно рассматриваются как более совершенный метод параллельного программирования. Существует большой выбор математических теорий для изучения и анализа систем с передачей сообщений, включая модель акторов и различные виды исчислений процессов.
|
Последний раз редактировалось javandernufirzam, 27.01.2014 в 15:23.
|
|
27.01.2014, 15:27
|
Профессор
|
|
Регистрация: 12.04.2010
Сообщений: 557
|
|
Сообщение от javandernufirzam
|
отсутствие перечисленных штуковин чего лишает меня в жизни?
что я без них совсем не смогу сделать и жизнь моя на десктопе будет печальной
то есть если я на десктопе обойдусь архитектурой из js
|
наверно, каких-нибудь относительно редких кейсов для синхронизации нескольких вычислительных потоков между собой.
навскидку трудно специально придумать.
проще взять конкретный сценарий и разобраться - можно его реализовать только через очередь сообщений, или нет.
|
|
27.01.2014, 15:35
|
Интересующийся
|
|
Регистрация: 27.01.2014
Сообщений: 18
|
|
получается - js в плане вычислений и интерфейса не уступает дестктопным приложениям ??
|
|
27.01.2014, 15:58
|
Профессор
|
|
Регистрация: 12.04.2010
Сообщений: 557
|
|
Сообщение от javandernufirzam
|
получается - js в плане вычислений и интерфейса не уступает дестктопным приложениям ??
|
Про вычисления - может уступать по скорости (по крайней мере, вряд ди JS будет выполняться быстрее С++).
Насчет интерфейса - да, в современных браузерах не уступает (тут скорее надо говорить о html и особенно css), ну кроме всяких там иконок в трее и т.п. А вообще этот момент холиварный, и на форумах вроде "просто треп" (на sql.ru) всегда вызывает срач до потолка
у веб-интерфейса основные недостатки - слабая поддержка устройств (типа сканера), буфера обмена, и прочих системных штук.
|
|
27.01.2014, 16:45
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от javandernufirzam
|
получается - js в плане вычислений и интерфейса не уступает дестктопным приложениям ??
|
WebWorkers API не является часть JS - это внешнее API браузера, например в Node.js их нет. А уступает не уступает надо сравнивать с конкретной реализацией конкретного языка.
|
|
27.01.2014, 17:17
|
Интересующийся
|
|
Регистрация: 27.01.2014
Сообщений: 18
|
|
здесь я говорю не о сферическом js в вакууме, а о связке технологий, хтмл5
это сложившийся фундамент веб приложений, ассемблер
|
|
|
|