[Philosophers]許容関数-usleep,gettimeofday


usleepman page
#include <unistd.h>

int	usleep(unsigned int microseconds);

/*
성공시 0을 반환하고, 그 외에는 -1을 반환함과 동시에 전역변수 errno에 해당 오류값을 세팅한다.
*/
usleep関数は、パラメータとしてマイクロ秒(百万分の1秒)またはプロセスに信号を送信するまで、プロセスの動作を一時停止する.sleep関数は、usleepとは異なり、プロセスを停止する単位はマイクロ秒ではなく秒である.usleep(1000000)sleep(1)は同様の機能を実行します!gettimeofdayman page
#include <sys/time.h>

int	gettimeofday(struct timeval *tp, struct timezone *tzp);

/*
성공시 0을 반환하고, 그 외에는 -1을 반환함과 동시에 전역변수 errno에 해당 오류값을 세팅한다.
*/
struct timeval {
        long    tv_sec;         /* 1970년 1월 1일부터의 초수 */
        long    tv_usec;        /* 및 마이크로 세컨드수 */
};

struct timezone {
        int     tz_minuteswest; /* 그리니지로부터 서방향에의 편차 */
        int     tz_dsttime;     /* 서머타임 보정의 타입 */
};
使用方法
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>

int	main(int argc, char **argv)
{
	struct timeval	start_time;
	struct timeval	end_time;
	long	diff_sec;
	long	diff_usec;
	double	diff_time;


	gettimeofday(&start_time, 0);	// usleep 전 시작 시간 저장
	usleep(1500000);		// 1.5초간 프로세스 중지
	gettimeofday(&end_time, 0);	// usleep 후 시간 저장


	diff_sec = end_time.tv_sec - start_time.tv_sec;		// 초단위
	diff_usec = end_time.tv_usec - start_time.tv_usec;	// 마이크로초 단위
	diff_time = diff_sec + ((double)diff_usec / 1000000);	// 총 초가 흘렀는지 계산

	printf("diff_sec : %lu\n", diff_sec);
	printf("diff_usec : %lu\n", diff_usec);
	printf("diff_time : %f\n", diff_time);
}
diff_sec : 1
diff_usec : 505151
diff_time : 1.505151