首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP流服务器:线程?

HTTP流服务器:线程?
EN

Stack Overflow用户
提问于 2010-03-02 01:10:24
回答 2查看 622关注 0票数 1

我已经在这里写了关于我想要创建的http聊天服务器:Alternative http port?这个http服务器应该将文本流到网站上同一聊天室的每个用户。浏览器将保持连接并等待进一步的html代码。(可以,浏览器不会拒绝连接)。

我遇到了一个新问题:因为这个聊天服务器不需要从客户端接收信息,所以在服务器发送第一个响应之后,就没有必要去监听客户端。新的聊天消息将在新的连接上发送到服务器。因此,我可以打开两个线程,一个等待新客户端(或新消息),另一个等待html流。这是一个好主意,还是我应该为每个客户端使用一个线程?当有许多在线聊天用户时,我不认为有一个线程/客户端是好的,因为服务器应该在他们自己的房间里处理多个不同的聊天。

3种可能性: 1.所有客户端一个线程,连续向每个客户端发送文本-不应该有太多延迟,因为它只是文本,这将类似于: user1.send(" text ");user2.send(" text "),... 2.每个聊天室或聊天室一个线程3.每个聊天用户一个线程- ...很多..。

谢谢,我还没有做太多关于套接字的工作;)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-02 01:16:46

我认为对于这个简单的应用程序,最简单的模式是有一个线程池,然后为每个客户端选择可用的线程,或者让它等待,直到其中一个线程可用。

如果你想认真理解http服务器架构的概念,谷歌如下:

apache architecture

  • nginx架构
票数 0
EN

Stack Overflow用户

发布于 2010-03-02 02:29:02

现在,您似乎正在考虑给定的线程总是执行给定(类型)的任务。虽然这种基本设计可以产生这样一个可伸缩的服务器,但它通常不能很好地工作。

通常,稍微抽象一点的视点效果更好:您有需要完成的任务,以及执行这些任务的线程--但线程并不真正“关心”它执行的是什么任务。

有了这个观点,您只需要创建某种类型的数据结构来描述需要完成的每个任务。当您有一个您想要完成的任务时,您可以填写一个数据结构来描述该任务,然后将其交给完成。在某个地方,有一些线程在执行这些任务。

在这种情况下,线程的确切数量就变得无关紧要了--您可以(也可以这样做)调整线程数量以适应可用的CPU核心数量、任务类型等,而不是影响程序的基本设计。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2357596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档