Conditional variable clock attribute learning

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <fcntl.h>
#include <assert.h>
#include <sys/wait.h>
#include <sys/acct.h>
#include <errno.h>
#include <sys/times.h>
#include <pthread.h>
#include <signal.h>
/*
CLOCK_REALTIME              // 实时系统时间
CLOCK_MONONIC               // 不带负跳数的实时系统时间
CLOCK_PROCESS_CPUTIME_ID    // 调用进程的CPU时间
CLOCK_THREAD_CPUTIME_ID     // 调用线程的CPU时间
*/
void print_clkid(clockid_t id)
{
    
    
    switch(id)
    {
    
    
        case CLOCK_REALTIME:
            printf("id = CLOCK_REALTIME\n");
            printf("CLOCK_REALTIME = %d\n",CLOCK_REALTIME);
            break;
        case CLOCK_MONOTONIC:
            printf("id = CLOCK_MONOTONIC\n");
            printf("CLOCK_MONOTONIC = %d\n",CLOCK_MONOTONIC);
            break;
        case CLOCK_PROCESS_CPUTIME_ID:
            printf("id = CLOCK_PROCESS_CPUTIME_ID\n");
            printf("CLOCK_PROCESS_CPUTIME_ID = %d\n",CLOCK_PROCESS_CPUTIME_ID);
            break;
        case CLOCK_THREAD_CPUTIME_ID:
            printf("id = CLOCK_THREAD_CPUTIME_ID\n");
            printf("CLOCK_THREAD_CPUTIME_ID = %d\n",CLOCK_THREAD_CPUTIME_ID);
            break;
        default:
             printf("clkid undefined\n");
             break;
    }
    return;
}
int main()
{
    
    
    pthread_condattr_t attr;
    clockid_t clkid;

    /*条件变量属性初始化,设置属性前先初始化*/
    pthread_condattr_init(&attr);

    /*获取默认时钟属性*/
    pthread_condattr_getclock(&attr, &clkid);
    print_clkid(clkid);// CLOCK_REALTIME

    /*时钟时钟属性*/
    if (0 != pthread_condattr_setclock(&attr, CLOCK_REALTIME))  // 实时系统时间
        printf("ERROR:set CLOCK_REALTIME\n");
    pthread_condattr_getclock(&attr, &clkid);
    print_clkid(clkid); // CLOCK_REALTIME

    /*时钟时钟属性*/
    if (0 != pthread_condattr_setclock(&attr, CLOCK_MONOTONIC)) // 不带负跳数的实时系统时间
        printf("ERROR:set CLOCK_MONOTONIC\n"); // ERROR:set CLOCK_MONOTONIC
    pthread_condattr_getclock(&attr, &clkid);
    print_clkid(clkid); // CLOCK_MONOTONIC

    /*时钟时钟属性*/
    if(0 != pthread_condattr_setclock(&attr, CLOCK_PROCESS_CPUTIME_ID)) // 调用进程的CPU时间
        printf("ERROR:set CLOCK_PROCESS_CPUTIME_ID\n");
    pthread_condattr_getclock(&attr, &clkid);
    print_clkid(clkid); // CLOCK_MONOTONIC

    /*时钟时钟属性*/
    if(0 != pthread_condattr_setclock(&attr, CLOCK_THREAD_CPUTIME_ID))  // 调用线程的CPU时间
        printf("ERROR:set CLOCK_THREAD_CPUTIME_ID\n");
    pthread_condattr_getclock(&attr, &clkid);
    print_clkid(clkid); // CLOCK_MONOTONIC

    return 0;
}
/*gcc cond4.c -o cond4 -lpthread*/

Test Results:
Insert picture description here

Guess you like

Origin blog.csdn.net/qq_38158479/article/details/115255584