当前位置: 技术问答>linux和unix
如何让主线程挂起一个指定的时间段而子线程继续运行谢谢
来源: 互联网 发布时间:2016-05-28
本文导语: 如题 Linux下如何让主线程挂起一个指定的时间段而子线程继续运行 sleep,usleep,nanosleep,select貌似都不行,在主线程里面用了以后所有线程都挂起了 烦请高手指点下,谢了先 | sleep 就是使线程挂...
如题
Linux下如何让主线程挂起一个指定的时间段而子线程继续运行
sleep,usleep,nanosleep,select貌似都不行,在主线程里面用了以后所有线程都挂起了
烦请高手指点下,谢了先
Linux下如何让主线程挂起一个指定的时间段而子线程继续运行
sleep,usleep,nanosleep,select貌似都不行,在主线程里面用了以后所有线程都挂起了
烦请高手指点下,谢了先
|
sleep 就是使线程挂起一段时间再继续执行的,这是最简单的方法:
#include
#include
#include
void thread1(void* arg)
{
int count = 50;
while(count--)
{
printf("thread1n");
usleep(10);
}
}
int main()
{
int sleeptimes = 2;
pthread_t threadid;
printf("main threadn");
pthread_create(&threadid, NULL, &thread1, NULL);
while(sleeptimes--)
{
printf("before sleep!n");
usleep(100);
printf("after sleep!n");
}
pthread_join(threadid, NULL);
}
#include
#include
#include
void thread1(void* arg)
{
int count = 50;
while(count--)
{
printf("thread1n");
usleep(10);
}
}
int main()
{
int sleeptimes = 2;
pthread_t threadid;
printf("main threadn");
pthread_create(&threadid, NULL, &thread1, NULL);
while(sleeptimes--)
{
printf("before sleep!n");
usleep(100);
printf("after sleep!n");
}
pthread_join(threadid, NULL);
}
|
那我建议你把它阻塞起来,当接收到alarm发的信号时再运行
|
sleep好像可以
|
何必一定要睡眠呢
pthread_join
pthread_mutxe_t
pthread_cond_t
都是可选对象
并且控制的粒度也更细。
pthread_join
pthread_mutxe_t
pthread_cond_t
都是可选对象
并且控制的粒度也更细。
|
pthread_join
阻塞等待目标线程退出。
阻塞等待目标线程退出。
|
这样的话用pthread_cond_t配合pthread_mutex_t比较合适。
你google下啊,有很多例子啊
|
pthread_cond_t配合pthread_mutex_t应该是可以解决你的问题了,推荐
|
sleep 是可以的
|
sleep,也可以试试带超时的读操作。