Nah hari ini JavaScript adalah pemain utama dalam semua teknologi pengembangan web, di sisi klien untuk membuat antarmuka pengguna lebih baik, logika sisi klien, pada beberapa server web sebagai logika sisi server juga
Tambahkan ke fakta orang (setidaknya beberapa dari mereka) mulai bergerak dalam pengembangan game web dari flash ke javascript dan HTML5
Bukankah ini saatnya mendukung multi threading! Adakah browser yang memungkinkan JavaScript untuk multi-threaded atau apakah ada dalam standar, HTML5 atau versi masa depan ?!
Jawaban:
Multi threading tidak akan dilakukan dalam EcmaScript tetapi dapat diekspos di lingkungan host.
Contoh klasiknya adalah WebWorkers yang memungkinkan Anda untuk memutar pekerja latar belakang untuk melakukan pekerjaan dan menyalahgunakan
<iframe>
sebagai cara untuk menelurkan proses baru.Perlu dicatat bahwa multi threading dalam JavaScript tidak diperlukan (ada pengecualian, terutama program yang berhubungan dengan grafis). Anda tidak memerlukan banyak utas, Anda sudah memiliki loop acara untuk GUI Anda dan rendering grafik Anda (kanvas) dipercepat perangkat keras (artinya GPU membuat grafik Anda secara paralel untuk Anda).
Meskipun proyek-proyek seperti webcl sangat menarik.
sumber
TIDAK
Multi threading adalah salah satu hal tersulit dalam peranti lunak untuk diperbaiki. Ada terlalu banyak kasus sudut yang sangat sulit untuk diselesaikan ketika kode Anda tidak deterministik. (Saya berbicara tentang multi threading dengan kunci dll). Selain itu, semua berbagai pustaka JavaScript dibangun dengan asumsi bahwa itu bukan multi-threaded.
Yang sedang berkata ada pekerja web yang memberi Anda kerangka kerja berbasis aktor untuk melakukan jenis operasi multi pemrosesan. Anda dapat membuat pekerja dan meneruskan data bolak-balik melalui acara.
EDIT: Alasan lain adalah bahwa ketika JavaScript dibuat itu dilakukan dengan asumsi itu akan digunakan untuk tugas-tugas kecil, jadi tidak ada konkurensi dibangun. Untuk retrofit sekarang akan memecah banyak kode. Dengan menambahkan pekerja web, dimungkinkan untuk memiliki sistem jika ada konkurensi tanpa memori bersama, tetapi dengan menggunakan aktor, model konkurensi yang telah menunjukkan dirinya sangat kuat di sejumlah bahasa lain seperti Erlang, Scala, Clojure dll.
(JIKA Anda tidak bisa mengatakan saya benar-benar tidak suka concurrency berbasis kunci)
sumber
Multi threading is one of the hardest things in software to get right.
- Saya hanya terkejut dengan ini! Browser yang Anda gunakan, OS desktop Anda, server web yang melayani halaman ini - praktis setiap aplikasi yang Anda gunakan sehari-hari memiliki multithreaded. APAKAH ANDA YAKIN BERARTI? Belum untuk menurunkan Anda, tetapi saya akan jika Anda mengatakanmultithreading is not done because it is hard
membuka javascript untuk multithreading akan menciptakan lebih banyak masalah daripada yang dipecahkan:
arsitektur saat ini adalah event-threaded tunggal berbasis (berjalan di gui thread lebih sering daripada tidak) dengan kata lain dengan setiap blok kode Anda dapat yakin bahwa tidak ada dalam lingkungan akan berubah dari awal hingga akhir kecuali apa yang diubah dalam kode.
segera setelah Anda mengizinkan preemption atau eksekusi paralel fitur ini akan hilang, ini berarti bahwa Anda perlu menerapkan kunci ke data yang ingin Anda mutasi plus memiliki seluruh sulit untuk debug kondisi ras untuk menghindari
dimungkinkan untuk melakukan eksekusi pseudo-paralel menggunakan batas waktu, ini berarti membagi fungsi yang besar atau panjang menjadi potongan atom dan menggunakan
setTimeout(function(){nextstep(args);},1);
sehingga hal-hal lain dapat berjalan jika diperlukansumber
Intel merilis River Trail beberapa waktu lalu, yang memungkinkan pemrograman paralel dalam Javascript. Namun, ini hanya plugin Firefox dan saya belum pernah mendengar tentang peta jalan yang membawa teknologi ini ke W3C, apalagi ECMA.
sumber