我已经实现了一个无锁链接列表数据结构。我正在尝试衡量该计划所用的时间。我有4个帖子。线程使用pthreads库实现。目前我正在使用以下方法测量时间
#include <time.h>
/*
Some code
.........
*/
pthread_t t1,t2;
clock_t begin = clock();
pthread_create (&t1, NULL, thread1, (void *)mylist);
pthread_create (&t2, NULL, thread2, (void *)mylist);
pthread_create (&t3, NULL, thread3, (void *)mylist);
pthread_create (&t4, NULL, thread4, (void *)mylist);
pthread_join (t1, NULL);
pthread_join (t2, NULL);
pthread_join (t3, NULL);
pthread_join (t4, NULL);
clock_t end= clock();
double time_s = (double)(end-begin)/ CLOCKS_PER_SEC;
我认为这会给我正确的结果。但是当我测量到这样的单个线程所花费的时间时
void * thread1(void * args)
{
clock_t begin = clock();
/* Some Code */
clock_t end= clock();
double time_s = (double)(end-begin)/ CLOCKS_PER_SEC;
}
时机不同。这些是我得到的阅读材料:
Total time:
2.06341
Thread 1
Time: 0.767887
Thread 2
Time:1.20169
Thread 3
Time:1.92999
Thread 4
Time:2.0584
为什么会这样?它是否正确?任何帮助将不胜感激。