在linux下,通过调用信号的一系列函数来模拟sleep函数的实现。
竞态条件:因时序问题而导致的结果不正确称为竞态条件。
普通版本的sleep实现:
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
void handle (int x)
{
}
unsigned int mysleep(size_t x)
{
int ret=0;
struct sigaction act,oct;
act.sa_handler=handle;
act.sa_flags=0;
sigemptyset(&act.sa_mask);
sigaction(14,&act,&oct);
alarm(x);
pause();
ret=alarm(0); // chuan 0 , diyici shezhi wei kong ,dierci wei shen yu shijian
sigaction(14,&oct,NULL);// hui fu
return ret; //
}
int main()
{
printf("start sleep..\n");
if(mysleep(3)&#