我正在尝试在 C 中为协作实时编辑器http://en.wikipedia.org/wiki/Collaborative_real-time_editor创建一个套接字服务器,但我不知道什么是最好的服务器架构。
起初,我尝试将 select 用于套接字服务器,但在那之后,我正在阅读有关 epoll 的内容,现在我认为 epoll 是最佳选择,因为客户端将发送每个用户将在 textarea 上写入的字母,以服务器,因此服务器将分配要处理的数据。
另外,我想在 epoll 中使用线程,但我不知道如何使用它们。我想使用线程,因为我认为在目标机器上使用 2 个或所有 CPU 会更好。
我的计划是
服务器启动时创建2个线程
第一个线程将分析新客户端并为读取或发送做好准备
第二个线程将负责从/向客户端读取和发送数据
问题是这 2 个线程将使用带有 epoll_wait 的 while(1)。
我的问题是,这是使用 epoll 和线程的良好服务器架构吗?如果没有,我有什么选择?
编辑:我不能使用libevent或libev或其他库,因为这是一个大学项目,我不允许使用外部库。