多线程长连接服务器端,线程资源的回收问题
时间:2010-08-25
来源:互联网
背景:主要是为了POS的接入提供服务,POS机通过海博通的网控器接入。
我要实现的功能:就是建立一个双工异步长连接的服务器端,与海波通的网控器实现长连接。
功能设计:1,创建一个服务器监听,用以接收客户端的连接(mian函数所做的操作)
2,收到客户端的连接请求后创建一个字进程用于建立跟这个客户端的连接
3,在字进程里创建一个接收线程和一个发送线程用以处理接收信息和发送信息
我主要是想,如果在创建的字进程里,做发送或者接收超时设置,如果超时,就直接exit,退出字进程。不知道这样是否存在问题。因为两个线程的资源可能都没有回收,而直接退出进程。
int main()
{
InitSocket(ip, port);//监听
while(1){
clisock=accept(svrsock,0,0);
if(fork = 0){
ConnFun();//如果收到一个监听,就创建一个字进程用于建立长连接。
}
}
}
//创建两个线程一个用于接收消息,一个用于发送消息
void ConnFun()
{
pthread_t tid[2];
void *pth_join_ret1;
void *pth_join_ret2;
int ret;
//创建接收网控器消息的线程
ret = pthread_create(&tid[0], NULL, doWorker1, NULL);
if(ret != 0){
close(clisock);
exit(-1);
}
//创建发送网控器消息的线程
ret = pthread_create(&tid[1], NULL, doWorker2, NULL);
if(ret != 0){
close(clisock);
exit(-1);
}
ret = pthread_join(tid[0], &pth_join_ret1);
ret = pthread_join(tid[1], &pth_join_ret2);
}
我要实现的功能:就是建立一个双工异步长连接的服务器端,与海波通的网控器实现长连接。
功能设计:1,创建一个服务器监听,用以接收客户端的连接(mian函数所做的操作)
2,收到客户端的连接请求后创建一个字进程用于建立跟这个客户端的连接
3,在字进程里创建一个接收线程和一个发送线程用以处理接收信息和发送信息
我主要是想,如果在创建的字进程里,做发送或者接收超时设置,如果超时,就直接exit,退出字进程。不知道这样是否存在问题。因为两个线程的资源可能都没有回收,而直接退出进程。
int main()
{
InitSocket(ip, port);//监听
while(1){
clisock=accept(svrsock,0,0);
if(fork = 0){
ConnFun();//如果收到一个监听,就创建一个字进程用于建立长连接。
}
}
}
//创建两个线程一个用于接收消息,一个用于发送消息
void ConnFun()
{
pthread_t tid[2];
void *pth_join_ret1;
void *pth_join_ret2;
int ret;
//创建接收网控器消息的线程
ret = pthread_create(&tid[0], NULL, doWorker1, NULL);
if(ret != 0){
close(clisock);
exit(-1);
}
//创建发送网控器消息的线程
ret = pthread_create(&tid[1], NULL, doWorker2, NULL);
if(ret != 0){
close(clisock);
exit(-1);
}
ret = pthread_join(tid[0], &pth_join_ret1);
ret = pthread_join(tid[1], &pth_join_ret2);
}
作者: dayuan555 发布时间: 2010-08-25
要实现这个我现在有几个问题:
1,不先收回线程资源,直接exit是否会出现问题。
2,线程超时设置,我以前一直在做多进程编程,多线程不太熟悉,但是一个进程内肯定是不支持多个SIGALRM信号的。
3,如果我想先回收线程资源,再在主线程里退出,应该怎么实现呢。
1,不先收回线程资源,直接exit是否会出现问题。
2,线程超时设置,我以前一直在做多进程编程,多线程不太熟悉,但是一个进程内肯定是不支持多个SIGALRM信号的。
3,如果我想先回收线程资源,再在主线程里退出,应该怎么实现呢。
作者: dayuan555 发布时间: 2010-08-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28