【问题标题】:Unix Domain Socket concurrent read/write on both endsUnix Domain Socket 两端并发读/写
【发布时间】:2016-08-28 04:16:23
【问题描述】:

出于多种原因,我想在两个进程之间使用 unix 域套接字进行 IPC。

每个进程通过写入套接字并将此事件传递给第二个进程来对来自外部世界的某种特定类型的异步事件做出反应 - 同时 - 每个进程还需要读取来自另一个套接字的数据以做一些事情。实际上,在此模型中,每个进程将有一个套接字和两个线程:一个用于可能阻塞读取,一个用于写入。

我想知道是否可以使用 unix 域套接字独立地从/向每个进程同时读取和写入,而无需使用任何显式锁定,这种安全性将由此类套接字隐式保证。如果是的话,我也想知道这个保证是在哪里正式声明的。

【问题讨论】:

标签: c multithreading unix posix unix-socket


【解决方案1】:

AF_LOCAL 套接字和 AF_INET 套接字之间唯一相关的区别是 AF_LOCAL 套接字对于当前计算机是本地的。创建AF_LOCAL 套接字并绑定它与创建AF_INET 套接字并将其绑定到localhost 没有区别。

绑定AF_LOCALsockets的路径只用于连接socket,没有别的。

因此,如果您创建一个面向连接的AF_LOCAL 套接字(使用SOCK_STREAMSOCK_SEQPACKET),那么每个连接都是唯一的,您可以通过相同的侦听(被动)AF_LOCAL 套接字连接多个进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2016-01-19
    • 2019-07-02
    相关资源
    最近更新 更多