读书人

sleep,wait,delay函数的差异

发布时间: 2012-11-26 11:48:49 作者: rapoo

sleep,wait,delay函数的区别

原型:extern void sleep(unsigned int sec);

用法:#include <system.h>

功能:短暂延时

说明:延时sec秒

举例:

// sleep.c

#include <system.h>

main()
{
int c;

clrscr();
printf("\nHello, world!");

sleep(1);

clrscr();
printf("\nHi, guys");

getchar();
return 0;
}

原型:extern void delay(unsigned int msec);

用法:#include <system.h>

功能:短暂延时

说明:延时msec*4毫秒

举例:

// delay.c

#include <system.h>

main()
{
int c;

clrscr();
printf("\nHello, world!");

delay(250); // 250*4=1000msec=1sec

clrscr();
printf("\nHi, guys");

getchar();
return 0;
}


wait(等待子进程中断或结束)
相关函数
waitpid,fork
表头文件
#include<sys/types.h>
#include<sys/wait.h>
定义函数
pid_t wait (int * status);
函数说明
wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则
参数
status可以设成NULL。子进程的结束状态值请参考waitpid()。
返回值
如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1。失败原因存于errno中。

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
 
sleep 使调用进程不让出CPU资源。停止当前线程任务。而wait让出了CPU。唤醒条件是notify方法(或notifyAll)。

读书人网 >网络基础

热点推荐