最佳答案
在套接字编程中,您创建一个侦听套接字,然后为每个连接的客户端获得一个普通的流套接字,您可以使用该套接字来处理客户端的请求。操作系统在幕后管理传入的连接队列。
两个进程不能同时绑定到同一个端口——无论如何,默认情况下都是如此。
我想知道是否有一种方法(在任何著名的操作系统上,特别是在 Windows 上)来启动一个进程的多个实例,这样它们都绑定到套接字,从而有效地共享队列。然后,每个流程实例都可以是单线程的; 在接受新连接时,它只会阻塞。当客户端连接时,一个空闲流程实例将接受该客户端。
这将允许每个进程有一个非常简单的单线程实现,除非通过显式共享内存,否则不共享任何内容,用户将能够通过启动更多实例来调整处理带宽。
这样的特征是否存在?
编辑: 对于那些问“为什么不使用线程?”显然线程是一个选项。但是对于单个进程中的多个线程,所有对象都是可共享的,必须非常小心地确保对象不是共享的,或者一次只对一个线程可见,或者是绝对不可变的,而且大多数流行的语言和运行时都缺乏管理这种复杂性的内置支持。
通过启动几个相同的工作进程,您将得到一个 违约不共享的并发系统,从而更容易构建正确的、可伸缩的实现。