[Philosophers]許容関数-usleep,gettimeofday
7369 ワード
usleep
man page #include <unistd.h>
int usleep(unsigned int microseconds);
/*
성공시 0을 반환하고, 그 외에는 -1을 반환함과 동시에 전역변수 errno에 해당 오류값을 세팅한다.
*/
usleep
関数は、パラメータとしてマイクロ秒(百万分の1秒)またはプロセスに信号を送信するまで、プロセスの動作を一時停止する.sleep
関数は、usleep
とは異なり、プロセスを停止する単位はマイクロ秒ではなく秒である.usleep(1000000)
とsleep(1)
は同様の機能を実行します!gettimeofday
man 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
Reference
この問題について([Philosophers]許容関数-usleep,gettimeofday), 我々は、より多くの情報をここで見つけました https://velog.io/@jwoo/Philosophers-허용함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol