Unix Domain Socket 两端并发read/write
Unix Domain Socket concurrent read/write on both ends
出于多种原因,我想在两个进程之间使用 unix 域套接字进行 IPC。
每个进程通过写入套接字并将此事件传递给第二个进程来对来自外部世界的某种特定类型的异步事件做出反应,同时每个进程还需要读取来自另一个进程的数据套接字做一些事情。实际上,在该模型中,每个进程将有一个套接字和两个线程:一个用于可能阻塞读取,一个用于写入。
我想知道是否可以使用 unix 域套接字来同时读写每个进程 from/to 独立地,而不使用任何显式锁定,因为这种套接字会隐式保证安全性.如果是的话,我也想知道这个保证是在哪里正式声明的。
AF_LOCAL
套接字和 AF_INET
套接字之间的唯一相关区别是 AF_LOCAL
套接字是 本地 当前计算机。创建一个 AF_LOCAL
套接字并绑定它与创建一个 AF_INET
套接字并将其绑定到 localhost
.
没有区别
用于绑定AF_LOCAL
套接字的路径只用于连接套接字,没有别的。
因此,如果您创建一个面向连接的 AF_LOCAL
套接字(使用 SOCK_STREAM
或 SOCK_SEQPACKET
),那么每个连接都是唯一的,您可以让多个进程通过相同的监听连接(被动)AF_LOCAL
套接字。
出于多种原因,我想在两个进程之间使用 unix 域套接字进行 IPC。
每个进程通过写入套接字并将此事件传递给第二个进程来对来自外部世界的某种特定类型的异步事件做出反应,同时每个进程还需要读取来自另一个进程的数据套接字做一些事情。实际上,在该模型中,每个进程将有一个套接字和两个线程:一个用于可能阻塞读取,一个用于写入。
我想知道是否可以使用 unix 域套接字来同时读写每个进程 from/to 独立地,而不使用任何显式锁定,因为这种套接字会隐式保证安全性.如果是的话,我也想知道这个保证是在哪里正式声明的。
AF_LOCAL
套接字和 AF_INET
套接字之间的唯一相关区别是 AF_LOCAL
套接字是 本地 当前计算机。创建一个 AF_LOCAL
套接字并绑定它与创建一个 AF_INET
套接字并将其绑定到 localhost
.
用于绑定AF_LOCAL
套接字的路径只用于连接套接字,没有别的。
因此,如果您创建一个面向连接的 AF_LOCAL
套接字(使用 SOCK_STREAM
或 SOCK_SEQPACKET
),那么每个连接都是唯一的,您可以让多个进程通过相同的监听连接(被动)AF_LOCAL
套接字。