单个进程可以在同一端口上执行并发非阻塞IO吗?

时间:2014-06-22 21:25:26

标签: sockets

我试图了解并发在系统级别的工作原理。

背景故事

我有一个应用程序和一个数据存储区。数据存储可以运行多个进程,因此可以同时处理多个请求。数据存储区使用格式<msg length> <operation code> <operation data>

的协议通过单个TCP端口接受通信

数据存储区上的现有应用程序代码块。我可以启动多个线程来实现并发,但仍然每个线程都会阻塞io。我有一些单线程非阻塞IO库,但使用它们应该要求我做一些套接字编程。

问题

单个进程连接池如何运行到单个非阻塞端口?根据我的理解,端口维护了一种映射,因此它可以在响应准备好时将响应发送到正确的位置。但我读到的是使用请求者的ip作为密钥。如果来自同一进程的多个请求发生在同一进程中,那么这些消息是否会混合/混合?

或者,是否为每个连接分配了一个唯一的密钥,因此要创建一个连接池,我只需要存储一个连接对象列表,并保证它们永远不会相互交互?


编辑:不知道为什么我说TCP,这个问题的一半内容是不必要的......我很尴尬。实际上可能应该删除它。我投票了。

1 个答案:

答案 0 :(得分:1)

  

数据存储区接受通过单个TCP端口进行的通信

accept()的结果是一个新的全双工套接字,可以同时读取和写入,并独立于进程中的所有其他套接字。其本地端口共享的事实无关紧要。 TCP端口不是物理对象,只是数字。

非阻塞模式和数据存储与它无关。