免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zydzmapx
打印 上一主题 下一主题

加急跪求帮助:线程资源释放的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-08-21 22:23 |只看该作者
原帖由 MMMIX 于 2008-8-21 20:15 发表

有资源消耗情况的数据么?



一般几K--几十K,  我的一般为12K

论坛徽章:
0
12 [报告]
发表于 2008-08-21 22:27 |只看该作者
原帖由 scutan 于 2008-8-21 20:16 发表
其实真的的原因是你没有认真看pthread_kill的说明:

所以此时你只是在检查你的线程是否存在 ,但是并没有终止这个线程.

或者你直接使用pthread_cancel()取代pthread_kill()




我明天上班后试一下,只是不知使用pthread_cancel()前是否需要使用pthread_join之类的函数处理,谢谢

论坛徽章:
0
13 [报告]
发表于 2008-08-21 22:28 |只看该作者
原帖由 Roemer 于 2008-8-21 20:36 发表
发信号0首先没有用,发起他信号的话也可能会对整个进程造成影响,
建立看看这组函数
pthread_cancel()
pthread_setcancelstate()
pthread_setcanceltype()



能否提供一个使用上述函数的小例子,谢谢

论坛徽章:
0
14 [报告]
发表于 2008-08-21 22:31 |只看该作者
原帖由 zydzmapx 于 2008-8-21 22:27 发表




我明天上班后试一下,只是不知使用pthread_cancel()前是否需要使用pthread_join之类的函数处理,谢谢



不需要了.

论坛徽章:
0
15 [报告]
发表于 2008-08-21 22:33 |只看该作者
原帖由 timespace 于 2008-8-21 21:04 发表


     5楼已经指出楼主用法的关键问题,使用pthread_kill(tid, 0)无法取消线程,即使第二个参数传入正确的信号值,也会带来额外的复杂性,比如进程级信号action和各线程信号mark设置不当都会带来问题。用pth ...



  我明天在pthread_create()加上如下,再把pthread_kill(tid, 0)换了,先谢过了
        pthread_attr_t attr;
        pthread_attr_init( &attr);
        pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);

                ret=pthread_create(&id,&attr,(void *) thread,NULL);

论坛徽章:
0
16 [报告]
发表于 2008-08-21 22:34 |只看该作者

回复 #14 scutan 的帖子

呵呵,不胜谢谢,但愿成功

论坛徽章:
0
17 [报告]
发表于 2008-08-21 22:38 |只看该作者
原帖由 duanjigang 于 2008-8-21 21:19 发表
不想顺着楼主的想法去想怎么做,我觉得你的起初的思路有问题,即使有人帮你解决了这个问题,估计你的饭碗会丢得很快了
================================
为什么不改一下你的设计,我以前做过跟你这 ...




首先谢谢你的建议,但一次性的创建我认为这对资源有限的情况下设计也许不是很合适,同时当系统持续运行时大量的网络客户连接断开未必就只几百个,有可能很多的。

论坛徽章:
0
18 [报告]
发表于 2008-08-21 22:43 |只看该作者
scutan,我的主进程是不会退出的,除非程序异常退出或者系统崩溃,您说的pthread_cancel(pid) 适合我的主进程不退出的情况吗

论坛徽章:
0
19 [报告]
发表于 2008-08-21 23:16 |只看该作者
原帖由 zydzmapx 于 2008-8-21 22:38 发表




首先谢谢你的建议,但一次性的创建我认为这对资源有限的情况下设计也许不是很合适,同时当系统持续运行时大量的网络客户连接断开未必就只几百个,有可能很多的。


你自己做过实验吗?
什么叫资源有限?呵呵,你老板该不会给你一个128M内存的机器让你去开发这些程序吧?
其次,你所谓的大量的网络连接断开能达到多少?最好自己先做实验试试。
一次创建300百个线程,每一个线程再支持10个连接的队列,着就能处理3000个连接了
不知道你把情况想的多复杂
个人认为技术上采用的越简单越好,这样程序稳定,尽量让好的设计思路去改善程序,不太支持在一种思路下深究技术

[ 本帖最后由 贺兰云天 于 2008-8-21 23:22 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2008-08-21 23:22 |只看该作者
原帖由 zydzmapx 于 2008-8-21 22:43 发表
scutan,我的主进程是不会退出的,除非程序异常退出或者系统崩溃,您说的pthread_cancel(pid) 适合我的主进程不退出的情况吗

适合,它不会对你的主进程造成影响的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP