我需要在x秒后打印一个线程的生命,我可以通过sleep()
函数来延迟它,但我不知道如何打印线程的生命。
#include <stdio.h>
#include <time.h>
void *thread_life(void *arg)
{
while(1)
{
printf("\n"); //print time
sleep(3);
}
}
答案 0 :(得分:2)
阅读time(7)。理解有几种时间概念(参见clock_gettime(2)):经过时间,单调时间,线程CPU时间,进程CPU时间。
要获取当前日期和时间(作为字符串),请使用time(2),localtime_r(3),strftime(3)。
如果您需要等待一段时间,请使用pause(2),nanosleep(2),poll(2)进行闲置等待。
顺便说一下,不要忘记printf
(更确切地说是stdout
)是缓冲的(通常是行缓冲的)。请参阅stdio(3),fflush(3)。
还阅读一些pthread tutorial(特别是要了解互斥体,条件变量,广播......)。另请参阅pthreads(7)和signal(7)。请记住,线程需要加入(pthread_join(3))或分离(pthread_detach(3))。