本地多线程服务器:如何简单?

时间:2013-03-13 12:16:36

标签: pthreads client-server epoll

有一项任务 - 我需要一个具有以下属性的客户端 - 服务器应用程序:

  • 客户端使用阻塞套接字
  • 服务器是被动的:他接受传入的连接,获取一些数据,处理它并发回结果
  • 服务器有多个线程(main除外),从1到大约100
  • 所有操作都在一台计算机上,即客户端和服务器都使用localhost
  • 传输的最大数据大小约为 1 KB

一开始我已经实现了基于epoll的服务器:

  • 主线程使用epoll执行IO,工作线程执行数据处理
  • 所有服务器套接字都是非阻塞的
  • 服务器有两个队列:主线程放置客户端请求的传入,主线程从哪里回复。

我的作品然后我再次考虑了这个设计:它没有考虑localhost。它更普遍,因此更复杂。做它比它更简单会很好。

所以:

  • 主线程执行epoll_wait,接受并管理连接队列。连接队列是主线程放置已接受连接的队列
  • 侦听套接字是非阻塞的。接受的套接字阻塞
  • 当任何套接字变为可读主线程唤醒工作线程时,工作人员在阻塞模式下进行恢复,处理并以阻塞模式发送。

你怎么看?那个设计够用吗?

感谢您的评论!

0 个答案:

没有答案