0

在理论上询问更多,我如何构建使用惰性套接字的服务器(或应用程序)?我正在设想一个 Web 应用程序,它通过 JSON 交换将其所有数据移动到一个中央 API 类 servlet。在传输完所有数据后,我可以让 HTTP 连接保持打开状态,以便向客户端写入更多内容,作为一种惰性推送技术。浏览器也可以在超时关闭套接字后重新连接。

询问该模型,我将如何以不通过指数线程分支消​​耗大量内存的方式编写应用程序?每个线程会处理一个或多个连接吗?每个人将如何发现要传输的新数据?- 大概我需要线程之间的对话,而不是每个线程自己主动搜索数据?如果我编写了一个产生 x+1 个子线程的父线程,那么每个线程与客户端的比例是 1:1 还是 many:1?我会遇到死锁问题吗?每个附加连接处理程序的内存占用是多少?

有人对此有想法吗?我想知道这在理论上会是什么样子而不是在实践中。

4

2 回答 2

2

您可以打开几个套接字并使用select()orpoll()让操作系统找出其中哪些需要完成。这样你只需要一个线程来处理任意数量的套接字。仅当操作系统发出数据/缓冲区空间可用的信号时,才以非阻塞方式进行读/写。

于 2009-11-24T06:18:30.500 回答
1

我建议你看看Twisted。它使用一种轻量级的方法,一个进程处理异步 IO,然后是多个工作进程。由于工作人员可以阻止文件和数据库调用,因此在线程工作人员中保持它们同步更容易。然后可以由使用异步 IO 的单个父线程处理大部分打开的套接字。

于 2009-11-24T06:19:41.747 回答