虚心请教一个线程池的问题。

yaya_lucky 2012-10-17 12:14:47
正在实现一个线程池,现有一个问题点不太明确,我的主线程里初始化创建N个work_thread和一个manage_thread,想法是等所有的创建work_thread准备就绪后,主线程才继续向下运行,manage_thread暂不用考虑就绪与否,我的实现大概是
tp_init()
{
创建N个work_thread;

创建manage_thread;

等待所有work_thread就绪的通知;
}

我的想法:1. tp_init()里用pthread_cond_wait等待条件变量, work_thread的工作函数里检查已经就绪的线程的个数,到达N个后 pthread_cond_signal通知主线程继续运行, 但是pthread_cond_wait pthread_cond_signal的时序是一个问题,如果pthread_cond_signal 在 pthread_cond_wait 之前,信号会丢失,主线程永久阻塞。
2. 用一个全局变量counter和锁实现,每个work_thread就绪后counter++;主线程轮询或sleep()检查,但这个问题是各个线程会频繁加解锁,效率是不是会很低??
3. 使用一个信号实现,主线程阻塞信号调用 sig_wait();所有线程就绪后pthread_kill();主线程继续运行。

请帮忙看看这三种是不是都能实现,每一种的优缺点? 总感觉第一种的时序问题很大
...全文
82 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaya_lucky 2012-10-17
  • 打赏
  • 举报
回复
这不是没人回嘛~~
[Quote=引用 1 楼 的回复:]
原来不虚心?
[/Quote]
wintree 2012-10-17
  • 打赏
  • 举报
回复
原来不虚心?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧