Cross Browser MultiThreading dengan JavaScript
Halo…
Kalo kemaren-kemaren saya ngomongin soal menye-menye (yang gak ada artinya) sekarang kita balik lagi ngomongin soal programming !
Salah satu hal yang paling dipengenin programmer javascript adalah punya fungsionalitas multi threading. Kalo cari di om Google, banyak banget orang yang nanya dibeberapa forum soal fasilitas multithreading itu. Walaupun banyak pro kontra antara perlu ato tidak javascript punya fasilitas multithread, ada saja terus orang yang nyari.
Sewaktu FireFox 2.x menggunakan javascript 1.7, ada yang mengimlementasikan thread dengan konstruk bahasa generator. Anda bisa lihat disini. Tapi permasalahannya javascript 1.7 cuma didukung oleh firefox, bahkan opera yang biasanya paling terdepan belum mengimplementasikan, apalagi IE –> kalo ini sih jangan berharap banyak
. Akhirnya implementasi yang cerdas diatas jadi gak berguna. Akhirnya saya turun tangan untuk buat implementasi multi thread
:D :D. Sebenernya idenya udah dari lama sih, bahkan thesis saya awalnya mo gunain ini.
Idenya sederhana, jadi gimana caranya jalanin kode yang bisa di suspensi untuk melakukan kode yang lain. Untuk yang sering pake javascript pasti langsung kepikiran sama settimeout. Cuma kalo ngoding manual pake settimeout tentu programmernya cape. Oleh karena itu saya buat lib yang menerima sebuah fungsi, kemudian fungsi tadi saya modifikasi secara otomatis sehingga eksekusi fungsi tadi bisa diinterupt.
Jadi mrogramnya seperti dibawah ini :
<script src=”thread.js”></script>
function threadFunc()
{
// thread command here
processMessage(); // pass excecution to other thread
// resume start here
}
var thread = new Thread(threadFunc);
thread.run();
Jadi agak mirip sama thread di bahasa pemrograman lain kan ? Oh iya, karena di javascript kita gak bisa pake preemtive multitasking, makanya disini pakai cooperative multi tasking. Untuk membuat eksekusi berpindah ke thread yang lain, panggil fungsi (jangan bingung, ini konstruk buatan saya sendiri
) :
processMessage();
Untuk testing, coba buka ke Halaman Test Multi Threading JavaScript.
Kalau misalnya mau download, bisa klik disini : jsthread.zip
Oh iya, ini saya dah coba di FireFox 3, IE 8 dan Chrome. Untuk Opera ato FireFox/IE versi lama mohon maaf aja ya, dikomputer saya cuma ada ketiga browser diatas.
Untuk dasar teori lengkapnya, saya jelasin kalo ada yang nanya aja, soal agak panjang dan mungkin sebagian besar orang gak tertarik…
October 13th, 2008 at 8:42 pm
Ceritain dong, kalo gak mau di posting, di comment juga gpp. Ditunggu ya…
October 13th, 2008 at 9:24 pm
Tul…ikutan nunggu ahhh…
October 14th, 2008 at 5:26 am
Jadi agak mirip sama thread di bahasa pemrograman lain kan ?
saya jadi inget DoEvent-nya VB tempo doeloe
perkembangan aplikasi web memang smakin pesat aja
ketika klorofil dkk dirilis, terutama konsep web desktop saya menganggap ini over engineering.
apa mampu JavaScript di browser menangani hal ini?
tapi perkembangannya ternyata bagus sekali
engine JS smakin dikembangkan
bahkan Eclipse.Org mengeluarkan RAP
kembali ke MultiThreading
mengingat fungsi JS yang smakin bertambah
tidak sesederhana dulu lagi memang MultiThreading diperlukan
solusi yang diberikan Mas Deny Depok bagus sekali
walaupun masih menggunakan cooperative multi tasking yang mudah hang
coba kalau programmer lupa menyisipkan processMessage(); dalam looping, tentu akan hang
tentu saja hal ini akan membuat kerja programmer lebih berat dengan meneliti tempat-tempat yang harus disisipi processMessage();
tapi ini nggak masalah mengingat ini solusi yang ada saat ini
selamat atas ide briliannya
saya berharap nanti akan ada fitur preemtive multitasking yang native di JS.
October 14th, 2008 at 7:38 am
@silent & Remo Harsono
He..he..he.. sebentar ya, nanti kayaknya saya buat di post aja, soalnya terlalu panjang kalo di comment. 2 hari lagi kedepan ya..
October 14th, 2008 at 7:45 am
@Agus Suhartono
Mas kalo dari group pengembang ecma script (nama official javascript) native threading akan di dukung di versi 3, wah 1.7 aja susah untuk diimplementasi oleh browser lain.
Memang cooperative multitasking bisa buat hang kalo programernya lupa naro fungsi dispatch, tapi dengan asumsi kalo aplikasi javascript dibuat oleh tim programmer yang kecil biasanya sih gak masalah, karena jarang programmer mo ngerusak programmnya sendiri kan.
Jujur yang saya implement ini metodenya naif banget, tapi jalan. Dengan asumsi yang koding multitaskingnya gak nakal. Ini juga menghilangkan kerumitan locking shared variable, karena semua perintah (dalam satu statement) dilaksanakan secara utuh, beda dengan preemtive yang memungkinkan terjadi perpindahan konteks eksekusi ditengah statement yang berpotensi menyebabkan inkonsistensi bahkan deadlock.
October 14th, 2008 at 7:52 pm
Pakai Iceweasel v. 2.0.0.3 bisa kok, Bang Deny.
October 26th, 2008 at 7:41 pm
[...] kemarin saya sudah janji untuk jelasin metode multi thearding di javascript yang saya post di sini. Dalam post ini saya mo jelasain, tapi sebelum baca mohon pengertian kalo tehnik ini naif karena [...]
May 5th, 2009 at 6:21 am
thx infonya bos
June 23rd, 2009 at 5:39 am
srpmic casino vegas red casino 2008 snoqualmie casino motel .las vegas casino shuttles club casino usa sesame street casino big daddy’s casino .pretend casino paradise 8 casino .ps3 ratchet casino leela goa casino boardwalk casino vegas little creek casino olympia .too toby keith ip casino .Ok, here .see .a search but new orleans harris casino sonesta beach resort and casino may be For soboba casino restaurant too cannery casino hotel hooters casino address Get info on binion casino look may be In tunica grand casino zz top winstar casino wathc Here you search hotel casino lake charles stuff site senecaniagaracasino.com seneca casino mirage casino sold blue heron casino it called crown royale casino lytton san pablo casino belle isle casino mi the aruba resort casino In the riverside spa and casino must be
macau casino jobs spade casino .This was the need for morongo casino new years or pogo.com casino And soaring eagle casino and resort mt pleasant mi .or .must be .or someone image as tulsa casino jericho casino should not As to naco hotel and casino or richards bay casino cool cat casino bonus codes fiesta casino hotel henderson borgatta casino atlantic city Whith quebec casino age Is the Well .
May 10th, 2010 at 1:33 am
You should definitely take a look at the free $50 bonus being offered at our new Bet Phoenix Casino. Available now at: Bet Phoenix. Good luck!