/*
Author: Match
Date: 2015/8/31
Description: 并发服务器的三种实现方式
*/
并发服务器在同一时刻可以处理多个客户的连接,实现主要分三种方式:多进程并发服务器,多线程并发服务器,I/O复用并发服务器
多进程并发服务器:
socket(...);
bind(...);
listen(...);
while(1)
{
accept(...);
if(fork(...) == 0)
{
close(...); /*关闭listenfd。因为子进程是父进程的副本,它拷贝 fork()之前的父进程的所有打开的描述符,这里要关闭*/
process(...);
close(...); /*confd*/
exit(...); /*关闭打开的所有描述符,退出*/
}
close(...);
}
多线程并发服务器:
socket(...);
bind(...);
listen(...);
while(1)
{
accept(...);
if(pthread_create(...) != -1)
{
process(...);
close(...);
pthread_exit(...);
}
close(...);
}
I/O复用并发服务器:
它的并发是可以同时监听多个或多种描述符,实际是迭代服务器的一种。
socket(...);
bind(...);
listen(...);
while(1)
{
if(select(...) > 0)
{
if(FD_ISSET(...))
{
accept(...);
process(...);
}
close(...);
}
}