- 论坛徽章:
- 0
|
请教我在程序中,为同一IP的list分配一个线程去处理,然后用pthread_join去等待它们执行结束,上述过程每隔1分钟循环一次,但是随着时间的增加,大概几个小时过去后再次分配线程就报Resource temporarily unavailable的错误,但是之前的线程我都是用pthread_join等它们结束后才再分配的,部分代码如下:
while (10) {
for (i = 0; i < emv_list_len(pIPList); i++) {
pIP = emv_list_get(pIPList, i);
if (pIP) {
emv_debug("pIP = %s\n",pIP);
pList = list_search_all(gMibList, (void *)pIP, list_objip_matches);
if (pList) {
emv_debug("start_mib_pthread ():pList's length = %d", emv_list_len(pList));
iRetCode = pthread_create(&tid, NULL, mib_pthread, (void *)pList);
if (iRetCode != 0) {
emv_error("pthread_create failed: %s", strerror(iRetCode));
} else {
emv_debug("tid = %u\n",(unsigned int)tid);
pt = (pthread_t *)malloc(sizeof(pthread_t));
*pt = tid;
emv_list_append(pPthreadList, pt);
}
}
}
pList = NULL;
pt = NULL;
}
for (i = 0; i < emv_list_len(pPthreadList); i++) {
pt = (pthread_t *)emv_list_get(pPthreadList,i);
if (pt) {
pthread_join(*pt, NULL);
}
pt = NULL;
}
sleep(60);
}
请教为什么会这样?多谢
[ 本帖最后由 tommyli 于 2006-11-3 10:15 编辑 ] |
|