同步编程
while(1)
{
epoll_wait(...)
for(;;)
{
if (fd == listenner_socket)
{
cfd = accpt(listenner_socket);
}
else
{
read(fd, buf, size);
process(buf);
}
}
}
缺点:所有的处理都放在同一个线程里,这个线程的压力很大,因为网络IO的处理总是比CPU要慢很多;
同时如果这里有一个客户端的请求,处理比较复杂,则会影响后面其它客户端的请求的响应时间;
半异步半同步编程
T1线程:
while(1)
{
epoll_wait(...)
for(;;)
{
if (fd == listenner_socket)
{
cfd = accpt(listenner_socket);
}
else
{
read(fd, buf, size);
enqueue(buf);
}
}
}
T2线程:
while (1)
{
wait_queue(buf);