如何解决另一个进程和线程问题
| 这个问题与一个线程执行的许多进程以及使用多个线程的Socket服务器或文件服务器实现有关:概念不清楚。 我仍然不清楚一些事情。现在,套接字服务器或文件服务器的客户端和服务器不必位于不同的机器中(当然也可以)。 服务器收到的请求来自不同的进程,但是它们由线程处理(例如每个进程一个),并且这些任务线程属于不同的进程(服务器进程)。我感到困惑的是如何通过单个进程的线程来处理来自不同进程的调用,并且这些线程如何使用“共享内存”架构进行通信,这种架构的“ THREAD”与“ PROCESSES”非常不同 谢谢解决方法
一些简单的基础工作。您的服务器进程包含一个或多个线程来处理来自任意数量的客户端进程的请求。客户端和服务器可以在相同或不同的计算机上。客户端和服务器由套接字“连接”,该套接字用于将请求从客户端发送到服务器。处理请求后,将使用相同的套接字向客户端提供响应。每个客户端将具有到服务器的唯一连接。
如上所述,有很多方法可以实现服务器。一种可能性是服务器具有一个线程,该线程使用select()处理套接字。让我们称它为主线程。服务器进程还将具有多个线程,这些线程将负责处理请求并响应客户端。让我们将它们称为工作线程。
当主线程从其客户端的套接字之一接收到一条消息时,主线程将接受此请求并将其交给工作线程之一进行处理。 Worker Thread将接受该请求并进行处理,然后使用原始套接字进行响应。
该服务器模型使用生产者/消费者模型,其中主线程是生产者(因为它从套接字接收请求并产生需要处理的工作),而使用者是工作线程。
在实现这种类型的服务器方面存在一些挑战,所有挑战都在各种数据结构和算法文本中进行了记录和讨论,其中最重要的是:
主线程和工作线程如何通信?
如何保护各个线程共享的数据免于同时修改?
如何选择应处理哪个工作线程?
我希望这有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。