Chủ đề và forking thực sự là hai khái niệm khác nhau, cả hai đều tồn tại trong các hệ thống Unix / Linux (và cả hai đều có thể được sử dụng trong C / C ++).
Ý tưởng về một fork () về cơ bản là tạo ra một quy trình riêng biệt có cùng mã thực thi với quy trình cha và bắt đầu thực hiện tại dòng ngã ba. Mục đích của việc sử dụng các nhánh với các hàm exec là các hàm exec sẽ đóng quá trình gọi chúng khi chúng kết thúc. Vì vậy, bạn thường rẽ nhánh, nhận được PID của mỗi quá trình (đứa trẻ luôn là 0) và khiến cha mẹ đợi cho đến khi đứa trẻ hoàn thành việc thực hiện chức năng exec.
Chủ đề được sử dụng cho song song (nhớ lại rằng cha mẹ chờ đợi đứa trẻ, thông thường, trong một chương trình rẽ nhánh). Một chuỗi, chẳng hạn như pthread trong C / C ++ (thực hiện tìm kiếm Google), sẽ chạy song song với quy trình chính và có thể chia sẻ các biến toàn cục và các hàm toàn cầu với chương trình gốc. Vì các luồng Java hoạt động tương tự nhau, tôi sẽ tưởng tượng rằng chúng hoạt động giống như các luồng này hơn là quá trình rèn.
Về cơ bản, có một sự khác biệt giữa forking và luồng. Họ làm những việc khác biệt (mặc dù có vẻ giống nhau). Những khái niệm này có thể khó hiểu, nhưng bạn có thể tìm hiểu chúng thông qua nghiên cứu (mở rộng) nếu bạn có mong muốn trung thực để hiểu chúng.
EDIT # 1
Xin vui lòng xem các ví dụ về cách dĩa và chủ đề có thể được gọi và sử dụng. Xin lưu ý hành vi của các hàm exec và tác dụng của chúng trên chương trình chính.
http://www.jdembrun.com:4352/computerScience/forkVSthread.zip