当前位置: 技术问答>linux和unix
关于线程的问题!
来源: 互联网 发布时间:2015-11-08
本文导语: 老师留的作业,计算创建两个线程共享同一变量都实现加一操作,一个加锁,一个不加锁,计算实现10000万次加一操作后,一个加锁,一个不加锁系统所用的时间差。现在已经写了两个小程序,一个是加锁所用的时间...
老师留的作业,计算创建两个线程共享同一变量都实现加一操作,一个加锁,一个不加锁,计算实现10000万次加一操作后,一个加锁,一个不加锁系统所用的时间差。现在已经写了两个小程序,一个是加锁所用的时间,一个是不加锁所用的时间。不知道怎么把他们连成一个程序,输出它们的时间差。请教高人。
两个小程序如下:
不加锁的:
#include
#include
#include
#define NLOOP 10000
int counter;
void *doit(void *);
int
main(int argc,char * *argv)
{
struct timeval tpstart,tpend;
float timeuse;
gettimeofday(&tpstart,NULL);
pthread_t tidA,tidB;
pthread_create(&tidA,NULL,&doit,NULL);
pthread_create(&tidB,NULL,&doit,NULL);
pthread_join(tidA,NULL);
pthread_join(tidB,NULL);
gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("Used Time:%fn",timeuse);
exit(0);
}
void *
doit(void * vptr)
{
int i,val;
for(i=0;i
两个小程序如下:
不加锁的:
#include
#include
#include
#define NLOOP 10000
int counter;
void *doit(void *);
int
main(int argc,char * *argv)
{
struct timeval tpstart,tpend;
float timeuse;
gettimeofday(&tpstart,NULL);
pthread_t tidA,tidB;
pthread_create(&tidA,NULL,&doit,NULL);
pthread_create(&tidB,NULL,&doit,NULL);
pthread_join(tidA,NULL);
pthread_join(tidB,NULL);
gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("Used Time:%fn",timeuse);
exit(0);
}
void *
doit(void * vptr)
{
int i,val;
for(i=0;i