avatar
重复利用threads的问题# Programming - 葵花宝典
l*n
1
有一些threads做完工作后,不想让他们终止了,想下次循环回来继续用。
例如:
while (cond)
{
....
....
pthread_create(......, myfun, ...);

....
....

}
void * myfun (void * arg)
{
do something.
}
现在不想每次循环的时候都重新生成threads. 所以想让这些threads 等待下一次loop
回来的时候继续干活,当然干的是同样的活。
这样该怎么实现? 还是用condition variable?
例如这样:
void * myfun (void * arg)
{
while (1)
{
do something;
cond_wait();
}
}
然后主thread里再加一个signal?
那 pthread_create()是不是要加一个flag, 就是让第一次进入时候create threads,
以后再loop进来的时候就不再create了,就只signal.
是这么做嘛?有没有什么例程序?
大家帮忙解答一下,给点
avatar
D*V
2
没看明白要干啥.
如果是想myfun干会活就歇会儿然后回来再干,可以sleep,这样等下个时间片来了会继续
work.
如果仅仅是想一个线程,再满足cond条件的时候干活,可以先建立线程,并且阻塞住,然后
while循环满足条件是signal唤醒该线程.

【在 l****n 的大作中提到】
: 有一些threads做完工作后,不想让他们终止了,想下次循环回来继续用。
: 例如:
: while (cond)
: {
: ....
: ....
: pthread_create(......, myfun, ...);
:
: ....
: ....

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。