1、设置线程池的最大线程数
2、设置线程池的并发处理线程数量
3、设置线程池最大的队列线程数
4、做好线程池的线程清理工作
做好这几点,理论上没问题了,具体还得看编程者代码的质量。
PS:服务器不可能为每一个请求都创建线程,得考虑到最大负载,当达到临界值的时候,服务器返回繁忙状态,拒绝服务即可,当然这是简单的处理办法。
做服务器,你需要知道服务器都需要什么技术。首先,搭建服务器一般都是在Linux平台,所以你需要了解Linux知识,包括Linux操作命令。另外,服务器经常需要脚本,你需要知道shell脚本的知识。
然后,就是网络通信,服务器和客户端需要进行通信,你需要知道tcp/ip协议,网络编程,http和https协议,还有单播,组播,广播。
还有,服务器一般还需要数据库做支撑,所以数据库还需要了解。
当然,最基础的编程语言肯定是需要熟练掌握的,最好能懂算法,这样搭建服务器才高效。
最后,还有一些特殊的技术,比如多客户端同时连接服务器问题,epoll,select技术,进程间通信技术,多线程技术,文件操作等。
当然,以上所有技术了解最好,有些是必须熟练使用的。但是有些不用熟练使用,因为服务器,也不会让你全干,分到每个人手上的活只是一部分。
#include <sys/stat.h>#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
void*thread(void*)
int client[5],i
main()
{
int serverSocket= socket(AF_INET,SOCK_STREAM,0)
struct sockaddr_in server_addr
struct sockaddr_in clientAddr
int addr_len = sizeof(clientAddr)
//线程
pthread_t id
pthread_attr_t attr
pthread_attr_init(&attr)////////////////////////////////////////////////
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED)
//创建地址
bzero(&server_addr,sizeof(server_addr))
server_addr.sin_family =AF_INET
server_addr.sin_port = htons(5555)
server_addr.sin_addr.s_addr = htonl(INADDR_ANY)
//绑定
bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr))
listen(serverSocket,5)
for(i=0i<5i++)
{
client[i] = accept(serverSocket,(struct sockaddr *)&clientAddr,(socklen_t*)&addr_len)
pthread_create(&id,&attr,thread,(void *)&client[i])/////////////////////////////////
pthread_join(id,NULL)
}
close(serverSocket)/////////////////////////
return 0
}
void* thread(void* argv)
{
char buffer[200]
int a=i
int s_c = *((int*)argv)///////////////////
while(1)
{
int n = recv(s_c,buffer,sizeof(buffer),0)
if(n >0)
printf("客户端发过来的 : %s\n",buffer)
else
return
}
close(s_c)
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)