我必须开发一个简单的C++命令行客户机/服务器聊天应用程序。这个应用程序必须提供一个基本的多部分聊天室实现。可以将IO/Multiplexing (select() syscall)与POSIX线程结合起来吗?我的意思是创建一个TCP服务器,它使用select()处理多个客户端,当客户端想与另一个客户机聊天时,servewr创建一个单独的线程,该线程使用IO/Multiplexing (select() syscall)来处理两个客户机之间的通信。这是个好主意吗我怎么能不这样做呢?
发布于 2015-04-22 12:52:44
对建筑的粗野尝试..。
将应用程序构造为两组线程(一组可能仅由一个线程组成)。
一个集合考虑TCP连接,每个TCP连接被分配给集合中的一个线程,线程只是永久地轮询分配给它的连接(传入消息)和从逻辑队列(传出消息)轮询一个(每个线程)。
另一组则关注逻辑/会话。每个会话都分配给一个特定的线程。每个线程只是永远运行,从-网络队列(传入消息)轮询(每个线程)。
网络线程集接收消息并将它们发送到正确的逻辑队列,假设有一种将连接映射到内部逻辑会话的方法。它轮询其逻辑队列,以获取并发送传出消息。
网络线程的数目是绑定的,它不取决于连接的数量。
逻辑线程集,接收来自其队列中的网络的请求,并在给定的会话状态下处理这些请求,并且(可能)将消息回发到被发送出去(由网络线程发送)。
逻辑线程的数目是绑定的,它不取决于会话的数量。
https://stackoverflow.com/questions/29797026
复制相似问题