Một chút suy nghĩ về single thread của Nodejs, có khác các ngôn ngữ khác không?
[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 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 . . .
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 xoát tiến trình . . . nên thường coding thì điều single thread như nhau thôi !
VD PHP có support xử lý multi-thread nhưng thậm chí nó còn không được khuyến khích xử dụng. Khi chạy web các tác vụ thường phải thực hiện tuần tự nên gần như không có chổ cho multi-thread.
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 xoát tiến trình . . . nên thường coding thì điều single thread như nhau thôi !
Đọc bài này dễ hơn nè, bao quát đầy đủ: https://codewala.net/2015/07/29/concurrency-vs-multi-threading-vs-asynchronous-programming-explained/
Nodejs bình thường thì là single-threaded async, nếu muốn multi-threaded async + shared memory thì phải viết native add-on.
Các ngôn ngữ khác cũng làm được cả, chẳng khác mấy, Javascript có cái tiện lợi của nó.