Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành Unix] Đồng bộ cha-con bằng wait (in tuần tự)

    Đồng bộ cha-con bằng wait()

    Bài này thực sự dùng fork() nhưng đảm bảo thứ tự in xác định nhờ wait():

    • Cha đọc số nguyên x từ stdin.
    • Cha fork() một con. Con in ra x * 2 rồi exit(0).
    • Cha gọi wait(NULL) để chờ con kết thúc xong, rồi mới in x + 1.

    Vì cha luôn wait() trước khi in, dòng của con luôn xuất hiện trước dòng của cha → output xác định.

    Khái niệm POSIX: wait(NULL) chặn tiến trình cha cho tới khi một con kết thúc, tránh được tình trạng chạy đua (race condition) về thứ tự in.

    Ví dụ I/O: x = 5 → con in 10, sau đó cha in 6.

    • Định dạng đầu vào:

      Một số nguyên x.

    • Ràng buộc đầu vào:

      -1000000 <= x <= 1000000

    • Định dạng đầu ra:

      Hai dòng: dòng 1 là x*2 (do con in), dòng 2 là x+1 (do cha in sau khi wait).

    Ví dụ:

    Đầu vào:

    5
    

    Đầu ra:

    10
    6

    Giải thích:

    Cha fork con; con in x*2 = 10 rồi exit. Cha wait chờ con xong mới in x+1 = 6. Thứ tự cố định: 10 rồi 6.

    Đang tải editor...