gcc 4.4.1
我正在编写一个服务器程序,其中许多客户端将连接到客户端,服务器将管理客户端的请求和管理客户端的状态。在使用异步编程时,高负载下的许多客户端将是一个决定性因素。然而,我从来没有在C中做过异步。
然而,根据我的研究,我认为我需要使用异步。
1)使用同步编程将意味着调用将被阻塞,并将造成瓶颈。系统在高负载的情况下会崩溃
2)使用线程的同步编程将为每个客户端创建一个新的线程,这意味着在高负载下系统资源可能会被耗尽,并可能使系统在处理所有这些线程时变得复杂。
3)使用异步意味着我必须开发一个状态机?
有谁能给我指个方向吗?在Aysnc中编程?
非常感谢你的建议,
发布于 2010-01-08 11:52:51
将传入的请求放入队列中
使用一个线程来分派队列
从队列获取的请求在它们自己的线程中执行;队列可以限制活动线程(线程池)的数量,以防止服务器过载。请求不会丢失,但它们可能会在队列中等待处理一段时间。
如果您愿意,队列管理器还可以终止耗时太长的线程
祝好运!
发布于 2010-01-08 16:43:08
有很多方法可以处理这个问题。
您可以编写一个程序来监视端口,并在收到请求时派生线程。
您可以编写一个单线程程序,并使用inetd将其设置为给定端口的处理程序。只要有客户端连接,程序的一个实例就会启动。
你可以使用状态机,队列,事件驱动模型,各种各样的东西。
说真的,你需要读几本关于网络编程的书。除非你明白你在做什么,否则你将很难创造出任何有用的东西。
https://stackoverflow.com/questions/2025189
复制相似问题