[英]boost::asio server multi-process
我会做一个简单的多进程(不是线程)服务器。 我已经看到了一个迭代示例,其中它一次处理一个请求。 相反,我需要同时处理更多的请求(少于10个,更多)。 在经典的c和c ++示例中,我已经看到服务器的设计如下:
int listensd, connsd; // listening socket and conection socket
pid_t pid; //process id
listensd=socket(....);
bind(listensd,...);
listen(listensd,...);
for(;;)
{
connsd=accept(listensd,...);
if((pid=fork())==0) //child process
{
close(listensd); //close the listen socket
do_it(connsd); //serve the request
close(connsd); //close the connection socket
exit(0);
}
close(connsd); //the parent closes the connection socket
}
是否可以通过boost做类似的事情? 我真的不知道如何获得两个不同的套接字,因为在boost中,所有函数( listen
, bind
, accept
等)都返回void。
是的,可以使用Boost.Asio为每个连接派生一个进程。 请参阅BSD Socket API Boost.Asio文档以获取bind
, listen
和accept
到相关Boost.Asio类型的映射。
但是,正如我在评论中指出的那样,我认为这种设计的扩展性根本不好。 您最好学习异步设计模式并利用Boost.Asio库的真正优势。 有关更多信息,请参见C10K问题 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.