Tôi có hai quá trình mỗi bộ đệm lớn dữ liệu, và tôi muốn kiểm soát đồng bộ hóa các quy trình 'ghi vào một tập tin.Làm thế nào tôi có thể đồng bộ hóa - làm cho nguyên tử - ghi trên một tệp từ hai quy trình?
quy trình 1 bộ đệm ghi A bao gồm (A1, A2, A3) và xử lý 2 bộ đệm B bao gồm (B1, B2, B3). khi chúng tôi sử dụng write()
gọi hệ thống để ghi các bộ đệm này vào đĩa đến cùng một tệp (toàn bộ bộ đệm cùng một lúc: write(fd, A, sizeof(A))
), Lược đồ tệp là gì?
- Có phải như sau: A, B hoặc B, A có thể?
- hoặc nó có thể là như thế này: A1, A2, B1, A3, ...
tôi yêu cầu này bởi vì các cuộc gọi hệ thống là nguyên tử. điều gì sẽ xảy ra nếu bộ đệm dữ liệu mà chúng tôi đang viết quá lớn. Nó giống như đường ống cho các tập tin đĩa thông thường?
Vì vậy, chúng tôi không có bất kỳ tín hiệu nào và 'O_APPEND' được bật, chúng tôi phải có A, B hoặc B, A. tôi có đúng không –
@Majid - Có, giả sử không có gì trên hệ thống ngắt bạn, bạn sẽ nhận được A, B hoặc B, A tùy thuộc vào người đầu tiên. – unpythonic
Cần lưu ý rằng ghi trên các tệp bình thường trên hệ thống tệp cục bộ sẽ không bao giờ bị gián đoạn. NFS có một lá cờ để làm cho chúng bị gián đoạn, nhưng mặc định là tắt. –