作者ec75413 (無虧/明月幾時有?)
看板Ajax
標題[討論] javascript是共時、多執行緒嗎?
時間Fri Nov 4 21:45:44 2011
參考討論串:
http://ppt.cc/ZLYB (研究中)
手邊沒恐龍本 忘記放哪了
所以不太確定共時的定義、需要解synchronization的狀況
不過以我手邊的工作來說
我確實遇到了synchronization的問題
有個critical section 在裡面出現狀況
所以加上ajax的js 的確會遇到同步問題。
那沒有ajax的javscript呢?
網路上有人說 ajax 讓javascript變成multi-threaded
這是因為ajax讓javascript可以不同步進行工作
也就是說 ajax 在讀取成功後所執行的工作
和原本ajax後面的程式碼
形成多thread的局面
沒有ajax 程式設計師無法寫出第二個thread的程式碼
所以好像可以說 沒ajax javascript就是單執行序。
不過這樣javascript就不會有同步問題嗎?
Wallace variance of Bakery's algorithm就是多餘的嗎?
setTimeout雖然就像是system call
交給系統幫我們做事的感覺
不過作的內容卻是設計師自己定義
萬一剛好是critical section,
會不會出問題呢?
本身的javascript執行到那個地方 還沒離開
又剛好被timer中斷 timer又跳進去執行
這樣會發生甚麼事呢?
alert()視窗出現時 其他javascript就一定會停止運作嗎?
即使丟給了系統一個system call, javascript會停下來等系統完成工作嗎?
其他像是鍵盤觸發的事件 如果使用者一直壓著
送出信號的間隔就會非常短
那如果剛好callback function裡的內容屬於critical section
會不會發生前一個信號的工作還沒完成 第二個訊號就送進來?
我心中目前有個小小的想法:
其實這些問題 只要不寫出scritical section就可輕鬆避開。
但這樣的話 就可能會捨棄 javascript
interactive的原則。
在這裡沒找到類似的討論串 網路上中文的也很少
但英文還算不少
所以把這個議題放上來。
不知這個問題已經是老梗了 還是...?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.162.216
1F:推 PsMonkey:所以你應該來寫 GWT [茶] 11/04 23:12
2F:→ TonyQ:寫GWT 跟寫 javascript 是完全的兩碼子事 :P 11/05 04:36
3F:推 PsMonkey:完全兩碼子的事情? 真是幹得好... 高手啊 11/05 11:08
4F:推 awashharp:我喜歡Node.js不知在哪看到的一句話: 11/06 07:24
5F:→ awashharp:Everything runs in parallel, except your code. 11/06 07:24
6F:→ awashharp:感覺就能夠了解JavaScript的運作過程XD 11/06 07:25
7F:→ TonyQ:不用太誇讚我,我不會不好意思。:P 11/06 10:59
8F:→ TonyQ:有見解的歡迎回文,不用高手來高手去內藏幾千字人家猜不透 11/06 11:05
9F:→ TonyQ:的小劇場,我的論點在於GWT一來綁定平台,二來寫的跟純 11/06 11:05
10F:→ TonyQ:JS的界面相去太遠,對於熟悉JS或者正在寫js的developer而言 11/06 11:06
11F:→ TonyQ:轉換成本頗高。所以要正在寫js的developer轉用GWT寫而解決 11/06 11:06
12F:→ TonyQ:原本問題是很困難的事情。既然很難有替代效應,自然就不是 11/06 11:06
13F:→ TonyQ:同一碼子的事情。醬講應該夠清楚了。 11/06 11:06
14F:→ TonyQ:雖然說你沒風度不是一天兩天的事情,但是我很害怕幾個月後又 11/06 11:08
15F:→ TonyQ:被你的小劇場抓出來鞭,所以只好還是回應一下,但是其實我 11/06 11:08
16F:→ TonyQ:不是那麼在乎你的答案就是。(攤手) 11/06 11:09
17F:→ chrisQQ:既然 GWT 都出來了,那我只好推個 Dart 了。 11/06 11:34
18F:推 PsMonkey:果然不愧是高手,應該請大家來膜拜一下 (y) 11/06 20:51
19F:→ PsMonkey:請大家千萬不要學 GWT,至少不要在 AJAX 版學,真的..... 11/06 20:53
20F:→ pttnews:樓上的,你時間太多了嗎? 11/16 11:29