我试图了解并发在系统级别的工作原理。
我有一个应用程序和一个数据存储区。数据存储可以运行多个进程,因此可以同时处理多个请求。数据存储区使用格式<msg length> <operation code> <operation data>
数据存储区上的现有应用程序代码块。我可以启动多个线程来实现并发,但仍然每个线程都会阻塞io。我有一些单线程非阻塞IO库,但使用它们应该要求我做一些套接字编程。
单个进程连接池如何运行到单个非阻塞端口?根据我的理解,端口维护了一种映射,因此它可以在响应准备好时将响应发送到正确的位置。但我读到的是使用请求者的ip作为密钥。如果来自同一进程的多个请求发生在同一进程中,那么这些消息是否会混合/混合?
或者,是否为每个连接分配了一个唯一的密钥,因此要创建一个连接池,我只需要存储一个连接对象列表,并保证它们永远不会相互交互?
答案 0 :(得分:1)
数据存储区接受通过单个TCP端口进行的通信
accept()的结果是一个新的全双工套接字,可以同时读取和写入,并独立于进程中的所有其他套接字。其本地端口共享的事实无关紧要。 TCP端口不是物理对象,只是数字。
非阻塞模式和数据存储与它无关。