Web worker

Un web worker, come definito dal World Wide Web Consortium (W3C) e dal Web Hypertext Application Technology Working Group (WHATWG), è uno script JavaScript che viene eseguito in background in una pagina HTML indipendentemente dagli script dell'interfaccia utente.[1] I Web worker sono spesso in grado di utilizzare le CPU multi-core in modo più efficiente.[2]

Il W3C e WHATWG considerano i web worker come script a esecuzione prolungata che non vengono interrotti dagli script dell'interfaccia utente (che rispondono ai clic o ad altre interazioni dell'utente). Il fatto di impedire a tali worker di essere interrotti dalle attività utente dovrebbe consentire alle pagine Web di rimanere reattive mentre eseguono attività lunghe in background.

Il W3C e il WHATWG sono attualmente nel processo di sviluppo della definizione di API per i web worker.[1]

Panoramica

Come concepiti da WHATWG, i web worker sono relativamente pesanti. Sono intesi per essere longevi, con un costo elevato in termini di prestazioni di avvio e un costo elevato di memoria per istanza.[1] Di conseguenza non dovrebbero essere utilizzati in grandi quantità, in quanto potrebbero monopolizzare le risorse di sistema.

I web worker consentono l'esecuzione dei thread del browser in concorrenza a uno o più thread JavaScript in esecuzione in background. Normalmente il browser, che segue un singolo thread di esecuzione, deve attendere il completamento dell'esecuzione dei programmi JavaScript prima di procedere e ciò potrebbe richiedere del tempo significativo che il programmatore potrebbe voler nascondere all'utente. I web worker permettono al browser di continuare con le normali operazioni durante l'esecuzione in background dello script.

La specifica web worker è separata dalla specifica HTML5[3] e può essere utilizzata con HTML5.

Esistono due tipi di web worker:[1] dedicati e condivisi.

Quando i web worker sono eseguiti in background non hanno accesso diretto al DOM ma comunicano con il documento tramite scambio di messaggi. Ciò consente l'esecuzione multi-thread dei programmi JavaScript.

Caratteristiche

I Web worker interagiscono con il documento principale tramite il passaggio di messaggi. Il codice seguente crea un worker che eseguirà il codice JavaScript nel file specificato.

var worker = new Worker("worker_script.js");

Per inviare un messaggio al worker si usa il metodo postMessage dell'oggetto worker, come mostrato nell'esempio successivo.

worker.postMessage("Hello World!");

La proprietà onmessage usa un event handler per recuperare informazioni da un worker.

worker.onmessage = function(event) {
	alert("Received message " + event.data);
	doSomething();
}
	
function doSomething() {
	//do work
	worker.postMessage("Work done!");
}

worker.terminate();

Una volta che un worker è terminato diventa fuori portata e la variabile che fa riferimento diventa undefined; a questo punto è necessario creare un nuovo worker, se necessario.

Esempio

L'uso più semplice dei web worker è eseguire task computazionalmente costosi senza interrompere l'interfaccia utente.

In questo esempio, il documento principale crea un web worker per computare numeri primi e li mostra progressivamente l'ultimo numero primo trovato.

La pagina principale come segue:

<!DOCTYPE html>
<html>
 <head>
  <title>Worker example: One-core computation</title>
 </head>
 <body>
  <p>il più grande numero primo calcolato fin ora è: <output id="result"></output></p>
  <script>
   var worker = new Worker('worker.js');
   worker.onmessage = function (event) {
     document.getElementById('result').textContent = event.data;
   };
  </script>
 </body>
</html>

La chiamata al costruttore Worker() crea un web worker e ritorna un oggetto worker , il quale è usato per comunicare con il web worker. L'event handler onmessage dell'oggetto permette al codice di ricevere messaggi dal web worker. Il codice del Web worker, contenuto nel file worker.js, è il seguente:

var n = 1;
var end_value = 10**7;
search: while (n <= end_value) {
  n++;
  for (var i = 2; i <= Math.sqrt(n); i++)
    if (n % i == 0)
      continue search;
  // trovato un numero primo!
  postMessage(n);
}

Per mandare un messaggio alla pagina quando un nuovo numero primo è stato trovato si utilizza il metodo postMessage().

Supporto

Il supporto dei browser per i web worker può essere controllato attraverso la proprietà Worker sull'oggetto globale window,[4] la quale sarà undefined se il browser non li supporta.

Il seguente codice di esempio controlla il supporto dei web worker su un browser:

function browserSupportsWebWorkers() {
  return typeof window.Worker === "function";
}

I web worker sono attualmente supportati da Chrome, Opera, Internet Explorer (versione 10), Mozilla Firefox e Safari.[3][5] Mobile Safari per iOS supporta i web worker da iOS 5. Il browser Android ha iniziato a supportarli in Android 2.1, ma il supporto è stato rimosso nelle versioni Android 2.2-4.3 prima di essere ripristinato in Android 4.4.[6][7]

Note

  1. ^ a b c d Web Workers, WHATWG. URL consultato il 3 giugno 2010.
  2. ^ HTML Living Standard, su Html.spec.whatwg.org, 30 gennaio 2017. URL consultato il 31 gennaio 2017.
  3. ^ a b "Introducing HTML5", Lawson, B. and Sharp, R., 2011.
  4. ^ "HTML5 Up and Running" Mark Pilgrim. O'Reilly/Google Press. August 2010
  5. ^ "HTML5 and CSS3" Brian P. Hogan. The Pragmatic Programmers, LLC 2010.
  6. ^ Archived copy, su isogenicengine.com. URL consultato il 10 luglio 2011 (archiviato dall'url originale il 19 ottobre 2013).
  7. ^ Can I use... Support tables for HTML5, CSS3, etc, su caniuse.com. URL consultato il 10 giugno 2017.

Collegamenti esterni

Read other articles:

South Korean TV series or program Cook RepresentativePromotional posterGenreVariety CookingPresented byKim Sung-joo Ahn Jung-hwan Kang Ho-dongStarringChoi Hyun-seok Sam Kim Lee Won-il Lee Yeon-bok Oh Se-deukJung Ho-youngChoi Hyung-jinLee Chan-ohYoo Hyun-sooCountry of originSouth KoreaOriginal languageKoreanNo. of episodes25ProductionProduction locationSouth KoreaRunning time70 minutesOriginal releaseNetworkJTBCReleaseFebruary 17 (2016-02-17) –August 10, 2016 (2016-08-10)...

 

 

Peta lokasi Kabupaten Magetan di Jawa Timur Berikut adalah daftar kecamatan dan kelurahan/desa di Kabupaten Magetan, Provinsi Jawa Timur, Indonesia. Kabupaten Magetan terdiri dari 18 kecamatan, 28 kelurahan, dan 207 desa. Pada tahun 2017, jumlah penduduknya mencapai 687.057 jiwa dengan luas wilayah 688,84 km² dan sebaran penduduk 997 jiwa/km².[1][2] Daftar kecamatan dan kelurahan di Kabupaten Magetan, adalah sebagai berikut: Kode Kemendagri Kecamatan Jumlah Kelurahan Jumlah ...

 

 

AEK Athens 2006–07 football seasonAEK Athens2006–07 seasonChairmanDemis NikolaidisManagerLorenzo Serra FerrerStadiumAthens Olympic StadiumSuper League2ndGreek CupRound of 32UEFA Champions LeagueGroup stageUEFA CupRound of 32Top goalscorerLeague: Nikos Liberopoulos (18)All: Nikos Liberopoulos (20)Highest home attendance56,203 vs Milan(21 November 2006)Lowest home attendance12,992 vs Ergotelis(30 September 2006)Average home league attendance22,737Biggest winAEK Athens 5–0 AELBiggest defea...

У Вікіпедії є статті про інших людей із прізвищем Купер. Армандо Купер Особисті дані Народження 26 листопада 1987(1987-11-26) (36 років)   Колон, Панама Зріст 187 см Вага 79 кг Громадянство  Панама Позиція півзахисник Інформація про клуб Поточний клуб «Арабе Унідо» Номер 26 Про...

 

 

«Antropomorfo» redirige aquí. Para otras acepciones, véase Antropomorfismo.   Hominoideos Rango temporal: Oligoceno temprano - Reciente PreЄ Є O S D C P T J K Pg N Proconsul †TaxonomíaReino: AnimaliaFilo: ChordataSubfilo: VertebrataSuperclase: TetrapodaClase: MammaliaInfraclase: PlacentaliaOrden: PrimatesSuborden: HaplorrhiniInfraorden: SimiiformesParvorden: CatarrhiniSuperfamilia: HominoideaSimpson, 1931[1]​Familias Hylobatidae Hominidae Dendropithecidae † Proconsulidae

 

 

Controlled outdoor fire For other uses, see Bonfire (disambiguation). Not to be confused with campfire. Bond fire redirects here. For the wildfire in Orange County, California, see Bond Fire. A midsummer bonfire in Seurasaari, Helsinki, Finland On the beaches of Duindorp (pictured) and Scheveningen, both part of The Hague, teams annually compete to build the world's largest bonfire[1] A bonfire is a large and controlled outdoor fire, used either for informal disposal of burnable waste...

Spanish footballer (born 1996) For more people with the same nickname, see Rodri (disambiguation) and Rodrigo (disambiguation). In this Spanish name, the first or paternal surname is Hernández and the second or maternal family name is Cascante. Rodri Rodri playing for Spain in 2019Personal informationFull name Rodrigo Hernández CascanteDate of birth (1996-06-22) 22 June 1996 (age 27)Place of birth Madrid, SpainHeight 1.90 m (6 ft 3 in)[1]Position(s) Defen...

 

 

كاسبر ديفيد فريدريك (بالألمانية: Caspar David Friedrich)‏  معلومات شخصية الميلاد 5 سبتمبر 1774(1774-09-05)غرايفسفالت الوفاة 7 مايو 1840 (65 سنة)دريسدن مواطنة مملكة بروسيا  العرق ألماني [1]  الحياة العملية المدرسة الأم جامعة غرايفسفالت، الأكاديمية الملكية الدنماركية للفنون الجميلة ال

 

 

2000 video game This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article is in list format but may read better as prose. You can help by converting this article, if appropriate. Editing help is available. (December 2011) This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all impor...

Sirエルトン・ジョンCBE CH 2023年 英国最終公演にて基本情報出生名 レジナルド・ケネス・ドワイト(Reginald Kenneth Dwight)生誕 (1947-03-25) 1947年3月25日(76歳)出身地 イングランド・旧ミドルセックス州(現ロンドン市ハーロウ区)ピナー(英語版)学歴 王立音楽院 卒業ジャンル ポップ[1]ロック[1]ポップ・ロック[1]アダルト・コンテンポラリー[1]ロ

 

 

Una figura que ilustra el problema de enrutamiento del vehículo Posible artículo duplicado: Problema de rutas de vehículos El problema de enrutamiento de vehículos (VRP, por su siglas en inglés) es un problema de optimización combinatoria y de programación de entero qué pregunta ¿Cuál es el conjunto óptimo de rutas para una flota de vehículos que debe satisfacer las demandas de un conjunto dado de clientes?. Es una generalización del conocido Problema del Viajante (TSP, por sus s...

 

 

Abjad-based writing system This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: Manichaean script – news · newspapers · books · scholar · JSTOR (June 2021) Manichaean scriptTable of letters from Manichaean script, with their Latin transliterationsScript type Abjad Time period3rd century – c. 10th ...

Malaysian direct broadcast satellite pay TV service Measat Broadcast Network Systems Sdn BhdTypeSubsidiaryIndustryBroadcasting, Mass Media, Streaming, Internet Broadband, Entertainment, Movie ProductionFounded1 June 1996; 27 years ago (1996-06-01)FounderAnanda KrishnanHeadquartersAll Asia Broadcast Centre (AABC), Technology Park Malaysia, Bukit Jalil, 57000 Kuala Lumpur, MalaysiaArea servedMalaysiaKey peopleTunku Ali Redhauddin (Chairman)Euan Daryl Smith (CEO)ProductsOTT Str...

 

 

Euphoric stimulative semen discharge of the male reproductive tract This article is about male ejaculation. For the female counterpart, see Female ejaculation. For other uses, see Ejaculation (disambiguation). EjaculationSperm travels from the epididymis through the vas deferens mixing with fluids from the male accessory glands as it enters the urethra. Rhythmic contractions of the pelvic floor and bulbospongiosus muscles push the semen towards the urinary meatus expelling it from the penis i...

 

 

Layout of the Laguna Seca Raceway The 1997 FIA GT Laguna Seca 3 Hours was the eleventh and final race of the 1997 FIA GT Championship season. It was run at Laguna Seca Raceway, United States on October 26, 1997. Official results Class winners in bold. Cars failing to complete 75% of winner's distance marked as Not Classified (NC). Pos Class No Team Drivers Chassis Tyre Laps Engine 1 GT1 11 AMG-Mercedes Bernd Schneider Klaus Ludwig Mercedes-Benz CLK GTR B 130 Mercedes-Benz LS600 6.0L V12 2 GT1...

Batalyon Infanteri 731/KabaresiLambang Yonif 731/KabaresiDibentuk1 Juni 1950NegaraIndonesiaCabangInfanteriTipe unitSatuan TempurPeranPasukan SenapanBagian dariBrigif 27/Nusa InaMarkasMasohi, Maluku Tengah, Maluku.JulukanYonif 731/KabaresiMotoKabaresiBaretHijauMaskotPedang dan tamengUlang tahun1 juni Batalyon Infanteri 731/Kabaresi atau Yonif 731/KBR merupakan Batalyon Infanteri yang berada di bawah komando Brigif 27/Nusa Ina. Sebelumnya dibawah Kendali Korem 151/Binaiya Kodam XVI/Pattimura. M...

 

 

Town in the South Island of New Zealand Place in West Coast, New ZealandBlackballBlackball Miners Strike MemorialCoordinates: 42°22′0″S 171°24′46″E / 42.36667°S 171.41278°E / -42.36667; 171.41278CountryNew ZealandRegionWest CoastDistrictGrey DistrictWardEasternElectoratesWest Coast-TasmanTe Tai TongaGovernment • Territorial authorityGrey District Council • Regional councilWest Coast Regional Council • Mayor of GreyTania G...

 

 

1993 World Championship Wrestling pay-per-view event BattlebowlPromotional posterPromotionWorld Championship WrestlingDateNovember 20, 1993CityPensacola, FloridaVenuePensacola Civic CenterAttendance7,000Tagline(s)Ready! Set! Battlebowl!Pay-per-view chronology ← PreviousHalloween Havoc Next →Starrcade BattleBowl was a one-time professional wrestling pay-per-view (PPV) event produced by World Championship Wrestling (WCW). The show took place on November 20, 1993, at the Pensacola ...

Association football club in England Football clubWellington AmateursFull nameWellington Amateurs Football ClubNickname(s)The AmsFounded1950 (1950)GroundSchool Grove, TelfordCapacity1500ChairmanPaul GregoryManagerMatthew BoswellLeagueWest Midlands (Regional) League Division One2022–23West Midlands (Regional) League Division One, 8th of 16 Home colours Away colours Wellington Amateurs Football Club is an English football club from Wellington, Shropshire but currently located in Telford....

 

 

River in Somerset, England Not to be confused with the River Axe that also flows through Somerset but empties into the English Channel at Axmouth in Devon. River AxeThe Axe emerging from the limestone at Wookey Hole CavesLocationCountryEnglandCountySomersetDistrictSomerset LevelsCitiesWookey, HentonPhysical characteristicsSourceMendip Hills • locationWookey Hole Caves, Mendip, Somerset, England • coordinates51°13′41″N 2°40′17″W / ...

 

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!