Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理大量并发TCP(甚至SSL)客户端_C_Multithreading_Ssl_Tcp_Concurrency - Fatal编程技术网

处理大量并发TCP(甚至SSL)客户端

处理大量并发TCP(甚至SSL)客户端,c,multithreading,ssl,tcp,concurrency,C,Multithreading,Ssl,Tcp,Concurrency,处理大量并发TCP客户端的最佳方法是什么?(比如10公里) 我的服务器需要处理并发SSL客户端(TCP上的SSL) 在浏览了几篇在线文章后,我提出了以下设计: 我的主线程等待epoll上的新连接 每个新接受的客户端连接都会产生一个新的分离线程,因此无需从主线程显式执行thread\u join 线程堆栈大小限制为64k,以允许多个客户端连接 这是正确的方法吗?还是有更好的方法? 我是新来的。感谢您的指导。提前谢谢 PS:我的服务器是C语言的,在ubuntu上运行。答案取决于操作系统,例如,在

处理大量并发TCP客户端的最佳方法是什么?(比如10公里)

我的服务器需要处理并发SSL客户端(TCP上的SSL)

在浏览了几篇在线文章后,我提出了以下设计:

  • 我的主线程等待epoll上的新连接
  • 每个新接受的客户端连接都会产生一个新的分离线程,因此无需从主线程显式执行
    thread\u join
  • 线程堆栈大小限制为64k,以允许多个客户端连接
这是正确的方法吗?还是有更好的方法? 我是新来的。感谢您的指导。提前谢谢


PS:我的服务器是C语言的,在ubuntu上运行。答案取决于操作系统,例如,在Windows上,你应该使用IO完成端口和线程池(线程创建成本太高),但其他操作系统不同。谢谢。我的服务器在Linux上运行。(Ubuntu)虽然很老,但它向你展示了一些重要的方面。如果你看看像nginx这样的高性能服务器,它们同时处理很多连接:它们不使用线程,而是使用事件驱动的方式工作。谢谢你的指点。我很好奇nginx在单线程模型中是如何做到这一点的。需要深入研究nginx体系结构,看看它们是如何以如此高效的方式处理大型连接的。您可以查看Apache的HTTP服务器的源代码,看看世界上最流行的HTTP服务器是如何处理这个问题的。看看他们的MPM模块,特别是“worker”、“event”和“prefork”。Apache的MPM文档位于