2011-01-20 30 views
7

Nếu có nhiều chủ đề ghi dữ liệu chiều dài cố định (nói 4 byte địa chỉ) vào một đường ống duy nhất và có một đầu đọc duy nhất của đường ống đó, có đảm bảo rằng người đọc sẽ nhận được byte theo thứ tự? Nói cách khác, là write() đến một ống nguyên tử?unix pipe multiple writers

Trả lời

5

http://pubs.opengroup.org/onlinepubs/009695399/functions/write.html

Atomic/phi nguyên tử: A ghi là nguyên tử nếu toàn bộ số tiền viết bằng một hoạt động không được xen kẽ với các dữ liệu từ bất kỳ quá trình khác. Điều này hữu ích khi có nhiều nhà văn gửi dữ liệu đến một người đọc duy nhất. Ứng dụng cần biết số lượng lớn yêu cầu viết có thể được mong đợi là được thực hiện một cách nguyên tử. Số tối đa này là được gọi là {PIPE_BUF}. Khối lượng IEEE Std 1003.1-2001 không cho biết yêu cầu viết có nhiều hơn {PIPE_BUF} byte là nguyên tử, nhưng yêu cầu viết ít hơn {PIPE_BUF} hoặc byte.

+0

Cảm ơn. Tôi thấy trang người đàn ông http://linux.die.net/man/2/write và không thấy gì cả. – Manish

+0

Lưu ý rằng giá trị của 'PIPE_BUF' thay đổi đáng kể giữa các hệ thống Unix. Xem ở đây để đối chiếu các giá trị được quan sát: http://ar.to/notes/posix#pipe-buf –

Các vấn đề liên quan