TCP并发服务器(五)——每个客户一个线程
2014-07-24 21:59
381 查看
TCP并发服务器(五)——每个客户一个线程
1.说明
前面4个版本都是关于进程的,可以将进程改为线程来实现。
这个最简单的版本也快于前面的所有预先派生进程的版本。
2.代码
1.说明
前面4个版本都是关于进程的,可以将进程改为线程来实现。
这个最简单的版本也快于前面的所有预先派生进程的版本。
2.代码
#include "unpthread.h" void sig_int(int signo) { DPRINTF("sig_int()\n"); void pr_cpu_time(void); pr_cpu_time(); exit(0); } void *doit(void *arg) { void web_child(int); DPRINTF("创建一个线程\n"); Pthread_detach(pthread_self()); //int connfd = (int)arg; web_child((int)arg); Close((int)arg); return NULL; } int main(int argc, char *argv[]) { socklen_t addrlen; int listenfd; if (argc == 2) { listenfd = Tcp_listen(NULL, argv[1], &addrlen); } else if (argc == 3) { listenfd = Tcp_listen(argv[1], argv[2], &addrlen); } else { err_sys("Usage: a.out [ <host> ] <port#>"); } struct sockaddr *cliaddr = (struct sockaddr*)Malloc(addrlen); Signal(SIGINT, sig_int); pthread_t tid; for (;;) { socklen_t clilen = addrlen; DPRINTF("Wait for a connection\n"); int connfd = Accept(listenfd, cliaddr, &clilen); DPRINTF("Accept a connection\n"); Pthread_create(&tid, NULL, &doit, (void*)connfd); } return 0; }
相关文章推荐
- (MFC实现)TCP服务器设计 - 每个客户连接对应一个线程
- TCP服务器设计范式 - 每个客户连接对应一个线程
- TCP服务器设计范式 - 每个客户连接对应一个线程
- UNIX网络编程卷1 服务器程序设计范式6 并发服务器,为每个客户请求创建一个线程
- TCP并发服务器,每个客户一个子进程
- TCP并发服务器(六)——创建线程池,每个线程accept,accept使用互斥锁保护——基于UNP代码
- java socket实现的客户端和服务器端,服务器采用多线程实现,为每个客户分配一个线程
- UNIX网络编程卷1 服务器程序设计范式1 并发服务器,为每个客户请求fork一个进程
- TCP并发服务器,每个客户一个子进程
- 使用Select I/O模型来实现一个并发处理多个客户端的TCP服务器
- 如何解决1万个并发连接,用每个客户一个线程的方法
- 以线程实现TCP并发服务器
- MarioTCP:一个单机可日30亿的百万并发长连接服务器
- TCP并发服务器程序,每个客户一个子进程
- TCP并发服务器程序,每个客户一个子进程
- 网络编程之TCP通信,为什么在Serve端为每个Client端开辟一个单独的线程来处理Client的请求
- 改造-TCP-Java-客户机/服务器应用程序-并发-限制线程上限
- 服务器编程入门(11)TCP并发回射服务器实现 - 单线程select实现
- Select I/O模型来实现一个并发处理多个客户端的TCP服务器 <转>
- Linux TCP 服务器编程(六):基于线程的并发服务器