내 멀티 스레드 응용 프로그램 (C++)은 pthread를 사용합니다. 응용 프로그램은 자동으로 스레드를 생성하고 필요할 때 다시 사용하며 너무 오랫동안 유휴 상태 일 때 스레드를 취소 할 수 있습니다.어떻게 작업자 스레드에서 부모 스레드 및 형제 스레드로 CPU 사용률을 프로그래밍 방식으로 얻으려면?
다른 시나리오에 적용될 때 응용 프로그램의 성능을 확인하기위한 통계 데이터를 캡처하기 위해 "특수 스레드"를 넣었습니다.
얼마나 많은 CPU가 사용되었는지 알기 위해 프로세스가 종료 될 때까지 기다릴 수 없습니다. , 그것을 할 수있는 더 좋은 방법이 있다면
struct rusage ru;
double utime, stime, ttime ;
if (getrusage(RUSAGE_SELF, &ru) == -1)
return;
utime = ru.ru_utime.tv_sec + (ru.ru_utime.tv_usec/1000000); // Total CPU time used in user space
stime = ru.ru_stime.tv_sec + (ru.ru_stime.tv_usec/1000000); // Total CPU time used in kernel space
ttime = utime + stime; // Total CPU Utilization
는 좋은 해킹, 말해 줄 수 :
특수 스레드에서이를 사용하려고했으나 결과는 PS & 상단의 출력과 일치하는 것 같지 않았어요 또는 위의 올바른 방법이며, 실제로 다른 뭔가가 누락 되었습니까?
미리 감사드립니다.
코드가 정상적으로 보입니다. 유일한 사소한 점은'ru.ru_utime.tv_usec/1000000'과 그 쌍둥이가 정수 구분 인 반면, 주변 코드는 부동 소수점 구분이 의도 된 것임을 암시합니다. 이것은 측정 된 시간의 중요한 사소한 차이를 설명하지는 않습니다. – NPE