Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tính toán trong tiến trình cha và con sử dụng fork() trong C++

Trong phần này chúng ta sẽ xem cách sử dụng fork() để tạo tiến trình con (child process) trong C++. Chúng ta cũng thực hiện một số tính toán trong mỗi tiến trình. Vì vậy, trong tiến trình cha (parent process) chúng ta sẽ tìm tổng các số chẵn của một mảng, và bên trong tiến trình con (child process) chúng ta sẽ đếm tổng các số lẻ từ các phần tử mảng.

Khi fork() được gọi, nó trả về một giá trị. Nếu giá trị lớn hơn 0, thì hiện tại đang ở tiến trình cha, ngược lại là tiến trình con. Vì vậy, sử dụng điều này ta có thể phân biệt giữa các tiến trình.

Mã ví dụ

#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(); // chia tiến trình
    if (n > 0) { // khi n không phải 0, là tiến trình cha
        for (int i : a) {
            if (i % 2 == 0)
                even_sum = even_sum + i;
        }
        cout << "Tiến trình cha" << endl;
        cout << "Tổng số chẵn: " << even_sum << endl;
    } else { // khi n là 0, là tiến trình con
        for (int i : a) {
            if (i % 2 != 0)
                odd_sum = odd_sum + i;
        }
        cout << "Tiến trình con" << endl;
        cout << "Tổng số lẻ: " << odd_sum << endl;
    }
    return 0;
}

Kết quả đầu ra

Tiến trình cha
Tổng số chẵn: 56
Tiến trình con
Tổng số lẻ: 64