unix 管道多个 writer

发布于 2024-10-12 14:43:02 字数 107 浏览 5 评论 0原文

如果有多个线程将固定长度数据(例如 4 字节地址)写入单个管道,并且该管道只有一个读取器,是否可以保证读取器按顺序获取字节?换句话说,write() 对于管道来说是原子的吗?

If there are multiple threads writing fixed length data (say 4 byte address) to a single pipe and there is a single reader of that pipe, is it guaranteed that the reader will get bytes in order? In other words, is write() to a pipe atomic?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

友谊不毕业 2024-10-19 14:43:02

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

原子/非原子:写入是原子的
如果将全部金额写在一份中
操作不与数据交错
来自任何其他进程。这很有用
当有多个作家时
将数据发送到单个阅读器。
应用程序需要知道有多大
写请求预计是
以原子方式执行。这个最大值是
称为 {PIPE_BUF}。本卷 IEEE
STD 1003.1-2001没有说明是否
写入请求超过
{PIPE_BUF} 字节是原子的,但是
要求写入 {PIPE_BUF} 或
更少的字节应该是原子的。

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

Atomic/non-atomic: A write is atomic
if the whole amount written in one
operation is not interleaved with data
from any other process. This is useful
when there are multiple writers
sending data to a single reader.
Applications need to know how large a
write request can be expected to be
performed atomically. This maximum is
called {PIPE_BUF}. This volume of IEEE
Std 1003.1-2001 does not say whether
write requests for more than
{PIPE_BUF} bytes are atomic, but
requires that writes of {PIPE_BUF} or
fewer bytes shall be atomic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文