- 论坛徽章:
- 0
|
我遇到一个这样的问题:
我在使用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 ...>
希望能得到您的帮助.
|
|