首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >另一个进程和线程问题

另一个进程和线程问题
EN

Stack Overflow用户
提问于 2011-06-04 12:02:13
回答 1查看 133关注 0票数 0

此问题与Many processes executed by one threadSocket server or file server implementation using multiple threads: concept not clear相关。

有几件事我仍然不清楚。现在,套接字服务器或文件服务器的客户机和服务器不必在不同的机器上(当然也可以在不同的机器上)。

服务器收到的请求来自不同的进程,但它们是由线程(每个进程一个)处理的,并且这些任务线程属于不同的进程(服务器进程)。我困惑的是,来自不同进程的调用如何由单个进程的线程处理,而这些线程使用“共享内存”体系结构进行通信,这种体系结构非常“线程”,与“进程”非常不同。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-04 12:38:10

一些简单的基础工作。服务器进程包含一个或多个线程,用于处理来自任意数量的客户端进程的请求。客户端和服务器可以在同一台或不同的机器上。客户端和服务器通过套接字“连接”,套接字用于将请求从客户端发送到服务器。一旦请求被处理,将使用相同的套接字向客户端提供响应。每个客户端都有一个到服务器的唯一连接。

有许多方法可以实现如上所述的服务器。一种可能是服务器有一个使用select()处理套接字的线程。让我们称其为主线程。服务器进程还将有几个线程,负责处理请求和响应客户端。让我们将这些工作线程称为Worker Thread。

当主线程接收到来自其客户端的某个套接字的消息时,主线程将接受此请求并将其传递给其中一个工作线程进行处理。工作线程将接受该请求并对其进行处理,然后使用原始套接字进行响应。

此服务器模型使用生产者/消费者模型,其中主线程是生产者(因为它接受来自套接字的请求并产生需要处理的工作),而消费者是工作线程。

实现这种类型的服务器有几个挑战,所有这些都在各种数据结构和算法文本中进行了记录和讨论,其中最重要的是:

如何保护由不同线程共享的数据不受同时请求的影响?

  • 如何选择应处理请求的工作线程?

我希望这能帮到你。

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

https://stackoverflow.com/questions/6234606

复制
相关文章

相似问题

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