linux多线程 进程休眠,转载:Linux多线程之线程休眠

我只想要进程的某个线程休眠一段时间的,可是用sleep()是将整个进程都休眠的,这个可能就达不到,我们想要的效果了。目前我知道有三种方式:

1、usleep

这个是轻量级的,听说能可一实现线程休眠,我个人并不喜欢这种方式,所以我没有验证它的可行信(个人不推荐)。

2、select

这个可以,我也用过这种方式,它是在轮询。

3、pthread_cond_timedwait

采用pthread_cond_timedwait(pthread_cond_t* cond, pthread_mutex_t

*mutex, const struct timespec

*abstime)可以优雅的解决该问题,设置等待条件变量cond,如果超时,则返回;如果等待到条件变量cond,也返回。本文暂不将内部机理,仅演

示一个demo。

首先,看这段代码,thr_fn为一个线程函数:

#include

#include

int flag =

1;

void * thr_fn(void * arg) {

while (flag){

printf("******\n");

sleep(10);

}

printf("sleep

}

int main() {

pthread_t thread;

if (0 != pthread_create(&thread, NU

你可能感兴趣的:(linux多线程,进程休眠)