- 论坛徽章:
- 1
|
主框架是网上找的,自己改了改,挺小巧的。
附件有详细代码和注释,带有测试程序,
不过改出了个问题!!!问题块如下:
现在还没想明白,准备把APUE线程篇看完了再回头看看,
有经验的帮忙看看啊或者有类似比较好的框架推荐下呢,仔细琢磨下。
int threadpool_add_task(thread_pool_t *thiz, task_fun_p task_fun, void *arg)
{
return_val_if_fail(thiz, -1);
retry:
pthread_mutex_lock(&thiz->mutex);
//任务过多, 超过了任务队列最大长度
if(thiz->cur_task_num >= thiz->max_task_num || thiz->closed)
{
//fprintf(stderr, "task queue full\n");
pthread_mutex_unlock(&thiz->mutex);
add_thread(thiz);// 加上这个会死锁 就这个问题了,没想明白,
usleep(1000);
goto retry;
}
|
|