240 likes | 324 Views
Többszálúság a böngészőben, avagy merjünk-e Javascriptben programot írni?. Farkas Máté Budapest.js meetup 2010.04.14. A Javascript nem erre való!. http://weblabor.hu//blogmarkok/104451#comment-67266. A legnagyobb hátrány:.
E N D
Többszálúság a böngészőben, avagy merjünk-e Javascriptben programot írni? Farkas MátéBudapest.js meetup 2010.04.14.
A Javascript nem erre való! http://weblabor.hu//blogmarkok/104451#comment-67266
A legnagyobb hátrány: • Amíg Javascriptben számítást végzünk, semmi más nem történhet a böngészőben • Kivétel jelenleg: Opera • És majd a Webkit 2 alapú böngészők
A megoldás: Web Worker • A Google Gears-féle WorkerPool szabványosítása, a HTML 5 része • A Worker egy teljesen különálló folyamatként dolgozik, csak a létrehozójával tud kommunikálni, és vele is csak üzenet küldéssel
index.html hello.js
Használati előnyök • A böngésző „lefagyasztása nélkül” tudunk hosszabb számításokat végezni • Kihasználhatóak a több magos processzorok • demo
Többszálú teljesítmény http://www.yafla.com/dforbes/Web_Workers_and_You__A_Faster_More_Powerful_JavaScript_World/
Böngésző támogatás • Chrome: minden worker új process • Safari: minden worker új szál • Firefox: nem string értékek küldése/fogadása is lehet • Opera: nem támogatja • Internet Explorer: nem támogatja
A Javascript lassú. PHP 5.2: 5,26 sec
Böngésző támogatás 2 • A HTML 5 Worker nem kompatíbilis a Gears-féle WorkerPool-lal • Volt több próbálkozás szimulálni ezt a viselkedést (jsworker, ie-web-worker), de egyik sem kielégítő
emulatedWorker.js • Elég ezt betölteni, és a Worker API-t használó Javascript futni fog minden böngészőben… • … de ettől nem lesz többszálú… • … és komolyabb adatszerkezetek-nél bonyolult az üzengetés
objectWorker.js • Egy intuitív absztrakció a Workerek használatához • (Típusjelzéssel ellátott) objektumok küldése/fogadása • Eljárás hívás
Összefoglalás • Kis odafigyeléssel ma már írhatunk programot Javascriptben • Weboldalak esetén egyszerűen küldhetjük háttérbe a számítási feladatokat • Worker-képes böngészővel teher-mentesíthető a szerverünk
Köszönöm a figyelmet! Farkas MátéBudapest.js meetup 2010.04.14.
Forráskódok, források • HTML 5 Web Workers http://www.whatwg.org/specs/web-workers/current-work/ • Mozilla MDC https://developer.mozilla.org/En/DOM/Worker • http://www.yafla.com/dforbes/Web_Workers_and_You__A_Faster_More_Powerful_JavaScript_World/ • http://ejohn.org/blog/how-javascript-timers-work/ • Forráskódok: http://fmate14.try.hu/2010/bpjs-objectWorker/ • objectWorker és emulatedWorker: http://code.google.com/p/object-worker/