Nó đi xuống chủ đề so với quy trình.
Hệ điều hành được thiết kế đặc biệt để mỗi 'người dùng' nghĩ rằng họ có toàn bộ máy tính cho chính họ - đó là lý do tại sao bạn chạy apache như người dùng wwwrun chẳng hạn.
Các lập trình viên, lập trình viên, bắt đầu quá tải mô hình đó, trước tiên bởi mỗi người dùng của con người chạy nhiều 'công việc'. Do các hệ điều hành được thiết kế cho nhiều người dùng, giới hạn trên của kiến trúc đó phản ánh giới hạn mở rộng trên cho người dùng đã đăng nhập - đó là lý do tại sao apache, sẽ bắt đầu chết ở 4.000 - 8.000 người dùng.
Quy trình là mô hình hoàn thiện (quy trình của tôi không thể làm hỏng máy của bạn). Khi chúng ta bắt đầu thấy sự ra đời của các chủ đề, mọi thứ bắt đầu trở nên rất khác biệt. Ở đây chúng tôi có các chương trình có các hoạt động chặn bên ngoài (chờ trên đĩa, chờ đợi trên io, chờ đợi trên bộ nhớ) muốn có thể chờ một mặt, và làm việc với các chủ đề khác và cho phép bạn thực hiện điều này và khắc phục hai vấn đề:
bạn không thể nhận đủ các quy trình vì hệ điều hành không thể xử lý nó
mỗi quá trình là tốn kém vì, theo thiết kế, nó mang lại cho các 'người dùng toàn bộ sức mạnh của hệ điều hành
Sự cố với chủ đề là họ phá vỡ sự tách biệt mà các quy trình được thiết kế cho. Chủ đề của tôi có thể làm hỏng chuỗi của bạn - lỗi lan truyền.
Trường hợp Erlang khác nhau ở một số khía cạnh. PhD Thesis của Joe Armstrong được gọi là Làm cho hệ thống phân phối đáng tin cậy trong sự hiện diện của lỗi phần mềm.
Độ tin cậy có nghĩa là quy trình tốt hơn so với chuỗi. Vấn đề là các quá trình của hệ điều hành quá “đắt” vì chúng được thiết kế cho con người (bạn sở hữu máy) và không phải là các đơn vị chương trình đồng thời. Trong máy ảo Erlang, VM có toàn bộ sức mạnh của một hệ thống đa người dùng (nó chạy trong một tiến trình hệ điều hành) và mỗi quá trình Erlang có lượng tử đồng thời nhỏ hơn nhiều - nếu nó muốn sử dụng 'máy lớn' nói chuyện với VM để thực hiện nó. Vì vậy, các quy trình Erlang rẻ hơn nhiều so với các quy trình hoạt động (và các luồng). Bạn chỉ sinh sản, đẻ trứng, đẻ trứng. Ra khỏi hộp Erlang VM bắt đầu với 2 ** 8 quy trình, nhưng bạn có thể tăng lên đến hàng triệu (nếu bạn có đủ RAM).
Ngoài ra, khi Joe đặt nó trong phần đầu tiên của Phần đầu tiên của Luận án tiến sĩ của mình, để có phần mềm đáng tin cậy bạn cần để bắt đầu với hai máy tính. Với Erlang/OTP, tại ghi thời gian bạn không biết máy tính của mình sẽ chạy phần mềm nào. Cụm Erlang/OTP, tại thời gian chạy, sẽ phân bổ công việc tính toán của bạn. Vì vậy, một quá trình Erlang là bản địa phân phối, như là đẻ trứng() (Erlang cho ngã ba()) và khởi động lại ngữ nghĩa.
Bởi vì Erlang có các quy trình riêng, nó có bộ lập lịch riêng và trình nạp mã/định dạng nhị phân riêng (Erlang có thể được diễn giải hoặc có thể biên dịch thành các tệp nhị phân gốc).Điều này sau đó cung cấp cho một đội hình các lợi ích bổ sung - trước khi bạn viết ứng dụng Erlang/OTP của bạn, nó có thể đã trao đổi các tập tin nhị phân của nó ra, v.v ...
Vì vậy, chắc chắn bạn có thể viết các ứng dụng đa luồng trong C++. chịu trách nhiệm ngăn chặn việc truyền bá lỗi và tạo sự ổn định của hệ thống.
Và chắc chắn, bạn có thể xây dựng phần mềm đáng tin cậy trong C - nhìn vào Erlang (VM được viết bằng C) điểm là tại sao bạn muốn? Trong những ngày xa xưa, các công ty đã viết 'hệ điều hành' của riêng mình, bạn có thể viết hệ điều hành của riêng bạn ngay bây giờ, nhưng tại sao bạn lại muốn? Có hàng triệu dòng mã được thử nghiệm mạnh mẽ 'hiện nó', giống như có 1.5m dòng mã được thử nghiệm mạnh mẽ trong hệ thống Erlang/OTP 'thực hiện'.
Sử dụng Erlang là sử dụng những thứ mà người khác đã viết và chỉ xây dựng các bit giúp công ty của bạn có hiệu quả.
Erlang không có 'chủ đề' nó có quy trình Erlang. Suy nghĩ về quá trình Erlang là 'chủ đề' là một sai lầm về danh mục chính và sẽ dẫn bạn đến đúng đường dẫn sai ... –
Yeap. Tôi đề cập đến 'thread' chỉ dành cho các lập trình viên chỉ biết C++ ở đây. –
** Liên quan: ** http://stackoverflow.com/questions/2708033/technically-why-is-processes-in-erlang-more-efficient-than-os-threads – Jonas