【问题标题】:pipe and thread safety [closed]管道和螺纹安全[关闭]
【发布时间】:2013-07-01 17:33:38
【问题描述】:

我在我的 linux C 程序中创建了一个管道和一个线程。所以有2个线程:主线程和第二个线程。

第二个线程将字节写入管道。

在主线程中,我为管道注册了一个EV_READ事件(libevent,它类似于epoll/poll中的read事件)。当管道中有可用字节时,触发事件。

这种管道使用是否存在线程安全问题?

谢谢!

【问题讨论】:

    标签: linux network-programming thread-safety pipe


    【解决方案1】:

    没有。你有一个作家和一个读者,所以没有冲突。管道读取和写入保证是原子的,最大可达PIPE_BUF 大小,因此即使您有多个读取器和写入器,只要每次读取/写入都低于 PIPE_BUF 大小,您无需执行任何特殊操作。

    【讨论】:

    • 你的意思是:1如果只有1个写者和1个读者,那么每次写多少都没有关系。 2 如果有多个读写器,只要每次调用read/write都在PIPE_BUF以下,就是线程安全的。我对吗?谢谢
    • 是的,我就是这个意思。
    猜你喜欢
    • 2019-01-31
    • 2016-02-20
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多