Home Knowlodge Bàn chút về single thread(nodejs) – multi thread(java/C# . . . )

Bàn chút về single thread(nodejs) – multi thread(java/C# . . . )

5 min read
0
0
3,425

[single thread] đã nói lên vấn đề, nhưng trong vài cuộc tranh luận gần đây nhiều member do nhầm lẫn hoặc cách nói gây nhầm lẫn cho người khác bằng những cụm từ như chạy ngầm, xử lý song song.

Cơ bản điểm khác nhau của JS và các ngôn ngữ khác nằm ở callback, tức nếu yêu cầu một tác vụ nào đó thường liên quan đến I/O như truy xuất DB, đọc file, gọi ajax . . . nó sẽ ra yêu cầu và việc xử lý có thể do process bên ngoài đảm nhận (như Mongodb, mysql, broswer . . . ) và khi nào có kết quả thì nó trả về qua callback.

Khả năng này làm nodejs trong như nhanh hơn các ngôn ngữ khác, có khả năng xử lý song song . . .

Thực ra điểm hay của callback ở chổ không phải dừng lại để chờ kết quả, mà kết quả lại do một process khác (mysql/ mongodb, các I.O . . . ) mà cả hai sẽ cùng làm một lúc. Và khi nào có kết quả thì các process khác sẽ callback trở lại.

Còn làm multi-thread không phải cứ code là tự nó multi-thread, các ngôn ngữ support tính năng này như Java/C# phải khai báo kiểu đối tượng, cài đặt tiến trình, kiểm soát tiến trình . . . nên thường coding thì điều single thread như nhau thôi !

[​IMG]

Vậy multi thread hiệu quả khi nào ? Nó chỉ hiệu quả khi có một thread không dùng hoặc dùng quá ít công xuất. Với thời gian còn dư đó một thread khác sẽ chạy để tăng hiệu quả . VD khi nghe nhạc, thread nghe nhạc ngốn rất ít resource, và khi đó ta có thể chạy một thread khác để tăng hiệu xuất khai thác CPU như chạy thêm thread “soạn thảo văn bản” chẳng hạng.

Trong Web develop rất ít khi dùng đến multi thread, do đặc tính tuần tự của web, khi có một request người ta chỉ muốn kết thúc cho nhanh để giải phóng resource, chờ request khác đến, run-time càng ngắn càng tốt nên hạn chế multi-thread là vậy.

Load More Related Articles
Load More By quangvu
Load More In Knowlodge

Leave a Reply

Your email address will not be published. Required fields are marked *

Check Also

Học Nodejs bằng thực tập dự án

I. Vấn đề của các fresher hoặc chưa có kinh nghiệm là gì ? Kinh nghiệm làm việc mà các nhà…