thảo luận Javascript có thực sự là single thread ?

  • Người tạo chủ đề Người tạo chủ đề teeeeeeeee
  • Ngày bắt đầu Ngày bắt đầu

teeeeeeeee

Senior Member
Hi mấy thím,
Chả là trên công ty em có ông anh cho rằng JS không phải là single thread :doubt: bởi vì có các thread khác như là webworker,..
Nhưng theo em hiểu thì các WebAPI này được cung cấp bởi browser và dùng để chạy các đoạn code JS chứ không phải là bản thân JS đã support multithread :doubt: mà ông kia thì đang mentor cho em nên không dám cãi :sweat:
Theo các fen thì có ý kiến thế nào ?
 
Hi mấy thím,
Chả là trên công ty em có ông anh cho rằng JS không phải là single thread :doubt: bởi vì có các thread khác như là webworker,..
Nhưng theo em hiểu thì các WebAPI này được cung cấp bởi browser và dùng để chạy các đoạn code JS chứ không phải là bản thân JS đã support multithread :doubt: mà ông kia thì đang mentor cho em nên không dám cãi :sweat:
Theo các fen thì có ý kiến thế nào ?
js single thread mà thím
 
EM biết mà thím nhưng mà có ý kiến cho là JS giờ đã support multithread r thím
sao em chưa nghe ai bảo bao giờ nhỉ. JS nhìn nó như multithread, nhưng thật ra chỉ có đúng 1 thread thôi, trong thread đó nó có 1 luồng chính, và các luồng phụ xử lý các worker, script.... (kinh nghiệm cá nhân, các thím tay to có biết gì thì sửa giúp em :D :D)
 
Single threaded là đang nói ở khía cạnh của developer, còn runtime thì liên quan gì. Giống như nói java là managed language thì đâu có nghĩa cái jvm cũng managed nốt.
Mà anh nào bảo JS support multithread thì cũng đếch có nghĩa nó support tốt bằng mấy thằng khác. Cái mớ Web Workers đúng nghĩa khổ dâm.
Nói JS hỗ trợ multithread dựa trên Web Worker thì cũng gần đúng bởi vì hầu hết các implement của nó đều hỗ trợ web worker.
WebAPI này được cung cấp bởi browser và dùng để chạy các đoạn code JS chứ không phải là bản thân JS đã support multithread
Cái bạn muốn nói là Ecmascript, còn nói JS nghĩa là nói đến 1 tập con impl như V8, JavaScriptCore, spider các kiểu...
 
Sửa lần cuối:
Lúc còn làm cho cty, cũng hay được đi phỏng vấn cùng leader. Đã pv khá nhiều ứng viên cho vị trí Js/Nodejs, hay hỏi một câu "Lấy một ví dụ để minh họa Js chạy trên môi trường trình duyệt web chrome là single thread", mới gặp được 1 cậu trả lời khá ưng, còn lại thì hơi mung lung.
 
cái multi-threaded ở đây là người ta nói cpu thread, tức là ngôn ngữ này phải cho phép tận dụng tất cả các thread của cpu (aka có thể chạy 100% cpu), chứ đếch phải là tao dùng thêm một thread nữa chạy GC, một thread nữa chạy event loop, thế là tao cũng là multithread.

lưu ý lần nữa là cái vụ này nó phải được provide ở mức độ ngôn ngữ (runtime, stdlib etc), chứ ví dụ như ruby cái parallel gem cũng chạy theo số cores/threads được nhưng nó phải dùng marshal để giao tiếp giữa các thread thì cũng bằng nhau.
 
Hi mấy thím,
Chả là trên công ty em có ông anh cho rằng JS không phải là single thread :doubt: bởi vì có các thread khác như là webworker,..
Nhưng theo em hiểu thì các WebAPI này được cung cấp bởi browser và dùng để chạy các đoạn code JS chứ không phải là bản thân JS đã support multithread :doubt: mà ông kia thì đang mentor cho em nên không dám cãi :sweat:
Theo các fen thì có ý kiến thế nào ?

Engine để chạy JS thì single thread, còn cái web worker theo đặc tả phải chạy trên môi trường độc lập trên Thread hoặc Process khác.

Sent using vozFApp
 
Lúc còn làm cho cty, cũng hay được đi phỏng vấn cùng leader. Đã pv khá nhiều ứng viên cho vị trí Js/Nodejs, hay hỏi một câu "Lấy một ví dụ để minh họa Js chạy trên môi trường trình duyệt web chrome là single thread", mới gặp được 1 cậu trả lời khá ưng, còn lại thì hơi mung lung.
Hóng câu trả lời :D chia sẻ đi thím.
 
Mấy bác code JS lâu có tự tin trả lời mấy khái niệm cơ bản của JS như
1. Hoisting
2. Scope
3. Stack
4. this keyword

không nhỉ? Em mới nhảy sang JS code code thì cũng code được thôi mà nhiều khái niệm chưa phân biệt được rõ khá mơ hồ
 
Mấy bác code JS lâu có tự tin trả lời mấy khái niệm cơ bản của JS như
1. Hoisting
2. Scope
3. Stack
4. this keyword

không nhỉ? Em mới nhảy sang JS code code thì cũng code được thôi mà nhiều khái niệm chưa phân biệt được rõ khá mơ hồ
Bảo hỏi trả lời luôn thì cũng chưa chắc :big_smile:trước khi phỏng vấn vẫn phải lướt lướt qua mấy cái
 
Lúc còn làm cho cty, cũng hay được đi phỏng vấn cùng leader. Đã pv khá nhiều ứng viên cho vị trí Js/Nodejs, hay hỏi một câu "Lấy một ví dụ để minh họa Js chạy trên môi trường trình duyệt web chrome là single thread", mới gặp được 1 cậu trả lời khá ưng, còn lại thì hơi mung lung.

Dễ mà ta.
Dưa trên cơ chế event loop của nó, Khai báo global với isRunning gán = true
1. setup 1 cái setTimeout sau 3s bắt đầu, để gán lại cái isRunning = false.
2. tôi tạo 1 cái infinity loop while(isRunning) . Và thân loop in dòng j đó ra coi chơi.
3. Nhưng rất tiếc là ko stop đc cái loop trên.
 
Dễ mà ta.
Dưa trên cơ chế event loop của nó, Khai báo global với isRunning gán = true
1. setup 1 cái setTimeout sau 3s bắt đầu, để gán lại cái isRunning = false.
2. tôi tạo 1 cái infinity loop while(isRunning) . Và thân loop in dòng j đó ra coi chơi.
3. Nhưng rất tiếc là ko stop đc cái loop trên.
Dùng cái setTimeOut là là đã sử dụng webAPI r mai fen
Cứ cho một sự kiện click r vòng lặp 1000000 r log ra kq là đc r mà


via theNEXTvoz for iPhone
 
Dùng cái setTimeOut là là đã sử dụng webAPI r mai fen
Cứ cho một sự kiện click r vòng lặp 1000000 r log ra kq là đc r mà


via theNEXTvoz for iPhone
thì tôi có nói setTimeOut là của JS spec đâu. Của thằng nào cũng ko quan trọng ko liên quann đến vd trên

Nhưng ý là demo cái tư tưởng bác xài cái làm j trong function truyền cho setTimeout thì cũng ko dừng đc cái loop kia.
 
thì tôi có nói setTimeOut là của JS spec đâu. Của thằng nào cũng ko quan trọng ko liên quann đến vd trên

Nhưng ý là demo cái tư tưởng bác xài cái làm j trong function truyền cho setTimeout thì cũng ko dừng đc cái loop kia.
Đề bài của thím kia chỉ là demo để thấy chạy singlethread thôi mà fen

via theNEXTvoz for iPhone
 

Thống kê chủ đề

Ngày tạo
teeeeeeeee,
Người trả lời cuối
AnyaKyle,
Trả lời
199
Lượt xem
30.110
Quay lại
Lên đầu trang