查看手册,sleep函数是让进程睡眠一段时间,但我发现,貌似sleep函数是让线程睡眠一段时间才对。
究竟sleep是针对进程的还是针对线程的啊?
sleep描述:
SLEEP(3) Linux Programmer's Manual SLEEP(3)
NAME
sleep - Sleep for the specified number of seconds
SYNOPSIS
#include <unistd.h>
unsigned int sleep(unsigned int seconds);
DESCRIPTION
sleep() makes the current process sleep until seconds seconds have
elapsed or a signal arrives which is not ignored.
RETURN VALUE
Zero if the requested time has elapsed, or the number of seconds left
to sleep.
CONFORMING TO
POSIX.1
BUGS
sleep() may be implemented using SIGALRM; mixing calls to alarm() and
sleep() is a bad idea.
Using longjmp() from a signal handler or modifying the handling of
SIGALRM while sleeping will cause undefined results.
SEE ALSO
signal(2), alarm(2)
以下代码,会不断打印“tf", 说明sleep是针对线程的,跟描述不一致。
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
void * pf(void *param)
{
while (true)
{
printf("tf\n");
}
}
int main()
{
pthread_t pid;
pthread_create(&pid, NULL, &pf, NULL);
while(1)
{
sleep(10);
}
return 0;
}