Используйте thread_info
и введите mach_thread_self()
, чтобы получить время загрузки ЦП для текущего потока.Следующее преобразует их в struct rusage
.
#include <mach/mach.h>
#include <sys/resource.h>
#include <errno.h>
int getrusage_thread(struct rusage *rusage)
{
int ret = -1;
thread_basic_info_data_t info = { 0 };
mach_msg_type_number_t info_count = THREAD_BASIC_INFO_COUNT;
kern_return_t kern_err;
kern_err = thread_info(mach_thread_self(),
THREAD_BASIC_INFO,
(thread_info_t)&info,
&info_count);
if (kern_err == KERN_SUCCESS) {
memset(rusage, 0, sizeof(struct rusage));
rusage->ru_utime.tv_sec = info.user_time.seconds;
rusage->ru_utime.tv_usec = info.user_time.microseconds;
rusage->ru_stime.tv_sec = info.system_time.seconds;
rusage->ru_stime.tv_usec = info.system_time.microseconds;
ret = 0;
} else {
errno = EINVAL;
}
return ret;
}