ในส่วนนี้เราจะมาดูวิธีการใช้ fork() เพื่อสร้างโปรเซสลูกใน C++ เรายังทำการคำนวณในแต่ละขั้นตอนอีกด้วย ดังนั้นในกระบวนการหลัก เราจะพบผลรวมของจำนวนคู่ทั้งหมดของอาร์เรย์ และภายในกระบวนการลูก เราจะนับผลรวมคี่จากองค์ประกอบอาร์เรย์
เมื่อเรียก fork() จะส่งกลับค่า หากค่ามากกว่า 0 แสดงว่าอยู่ในกระบวนการหลัก มิฉะนั้นจะอยู่ในกระบวนการย่อย เมื่อใช้สิ่งนี้ เราจึงสามารถแยกแยะระหว่างกระบวนการต่างๆ ได้
โค้ดตัวอย่าง
#include <iostream> #include <unistd.h> using namespace std; int main() { int a[15] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , 11, 12, 13, 14, 15}; int odd_sum = 0, even_sum = 0, n, i; n = fork(); //subdivide process if (n > 0) { //when n is not 0, then it is parent process for (int i : a) { if (i % 2 == 0) even_sum = even_sum + i; } cout << "Parent process " << endl; cout << "Sum of even numbers: " << even_sum << endl; } else { //when n is 0, then it is child process for (int i : a) { if (i % 2 != 0) odd_sum = odd_sum + i; } cout << "Child process " <<endl; cout << "Sum of odd numbers: " << odd_sum << endl; } return 0; }
ผลลัพธ์
Parent process Sum of even numbers: 56 Child process Sum of odd numbers: 64