免费注册 查看新帖 |

Chinaunix

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

源码阅读第一期:axel和wget [复制链接]

论坛徽章:
0
1 [报告]
发表于 2012-08-21 09:53 |显示全部楼层
我遇到一个这样的问题:
我在使用axel多线程下载工具时,axel运行一段时间后, 就不再下载数据, 用strace跟踪发现,axel在不断的调用pthread_create(),而被创建的 thread 停止在
futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
In main thread , 因为设置了20秒超时
if( gettime() > axel->conn[i].last_transfer + axel->conf->reconnect_delay
{
    pthread_cancel( *axel->conn[i].setup_thread );
    axel->conn[i].state = 0;
}
被创建的线程不断的被cancel. 就这样线程被不断的创建,又被不断的cancel, 导致 url download fail.

env:

$> axel -V
Axel version 2.4 (Linux)

Copyright 2001-2002 Wilmer van der Gaast

$> axel -a -n 10 -s 409600 "myurl"

值得思考的地方:
1 strace的结果中 futex() 的调用的第一个参数几乎是同一个地址.
26045 15:02:14.142785 futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
26047 15:02:14.143323 futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
26046 15:02:14.143363 futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
26048 15:02:14.143597 futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
26049 15:02:14.143819 futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
26050 15:02:14.144037 futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
26051 15:02:14.144258 futex(0xb77bcde0, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>

希望能得到您的帮助.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP