为什么difftime(final,initial)/ 1000000给出0输出?

时间:2019-05-30 16:16:40

标签: c++ time.h

注意:我已经编辑了上一个问题,并将其更改为一个新问题,因为我的问题被否决,因此无法发布新问题。

我编写了一个简单的c ++程序来使用一些线程进行日志记录。我已经计算了初始时间和最终时间。我希望使用difftime(以微秒为单位)来计算执行时间,但是我得到的输出为0。

pthread_mutex_t loc;

void* print(void *)
{
    pthread_mutex_lock(&loc);
    static int j = 0;
    for(int i = 0;i<100;i++)
        cout<<"logging  "<<j<<"\n";
    j++;
    pthread_mutex_unlock(&loc);
}

main()
{
    time_t initial;
    time(&initial);
    pthread_t p[4];

    if(pthread_mutex_init(&loc, NULL) ==0)
    {
        pthread_create(&p[0], NULL, print, (void *)0);
        cout<<"flag 0\n";
        pthread_create(&p[1], NULL,print,(void *)1);
        cout<<"flag 1\n";
        pthread_create(&p[2],NULL,print, (void *)2);
        cout<<"flag 2\n";
        pthread_create(&p[3],NULL,print,(void *)3);

        pthread_join(p[0],NULL);
        pthread_join(p[1],NULL);
        pthread_join(p[2],NULL);
        pthread_join(p[3],NULL);

        time_t final;
        time(&final);
        double tim = (double)difftime(final, initial)/1000000;
        cout<<tim;
    }
    pthread_mutex_destroy(&loc);    
}

output

0 个答案:

没有答案