Thread dan forking sebenarnya adalah dua konsep yang berbeda, keduanya ada dalam sistem Unix / Linux (dan keduanya dapat digunakan dalam C / C ++).
Gagasan fork () pada dasarnya adalah penciptaan proses terpisah yang memiliki kode eksekusi yang sama dengan proses induk, dan yang memulai eksekusi pada baris fork. Tujuan menggunakan garpu dengan fungsi exec adalah bahwa fungsi exec menutup proses yang memanggil mereka ketika mereka berakhir. Jadi, Anda biasanya bercabang, mendapatkan PID dari setiap proses (anak selalu 0), dan membuat orang tua menunggu sampai anak selesai menjalankan fungsi exec.
Thread digunakan untuk paralelisme (ingat bahwa orang tua menunggu anak, biasanya, dalam program bercabang). Utas, seperti pthread dalam C / C ++ (melakukan pencarian Google), akan berjalan secara paralel dengan proses utama, dan dapat berbagi variabel global dan fungsi global dengan program asli. Karena thread Java berperilaku serupa, saya akan membayangkan bahwa mereka bertindak lebih seperti thread ini daripada seperti proses forking.
Pada dasarnya, ada perbedaan antara forking dan threading. Mereka melakukan hal-hal yang sangat berbeda (walaupun tampak serupa). Konsep-konsep ini mungkin sulit dipahami, tetapi Anda dapat mempelajarinya melalui penelitian (luas) jika Anda memiliki keinginan yang jujur untuk memahaminya.
EDIT # 1
Silakan lihat contoh-contoh ini bagaimana garpu dan utas dapat dipanggil dan digunakan. Harap perhatikan perilaku fungsi exec dan efeknya pada program utama.
http://www.jdembrun.com:4352/computerScience/forkVSthread.zip