实验一-Linux多线程编程一.doc

实验一-Linux多线程编程一.doc

ID:55027697

大小:57.00 KB

页数:6页

时间:2020-04-26

实验一-Linux多线程编程一.doc_第1页
实验一-Linux多线程编程一.doc_第2页
实验一-Linux多线程编程一.doc_第3页
实验一-Linux多线程编程一.doc_第4页
实验一-Linux多线程编程一.doc_第5页
资源描述:

《实验一-Linux多线程编程一.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一Linux多线程编程I一、实验目的熟悉GNUGCC编译器,能够用Pthreads线程库熟练编写多线程程序。二、实验内容1、设一个double型的一维数组,数组长度是1,000,000,计算全数组部元素的和。要求:1)编制一个串行程序,仅有一个主线程完成上述计算。2)编制一个多线程程序,除主线程外,派生四个子线程完成上述计算。分别获得以上两个程序的计算时间,对比分析。2、定义以下三个数组:#defineLEN;DoubleA[LEN],B[LEN],C[LEN];for(i=0;i++;i

2、]}分别编制一段串行程序和一段多线程程序(包括四个线程),执行上述循环体,比较其执行所花费的时间。提示:clock()是C/C++中的计时函数,与其相关的数据类型是clock_t,通过clock()可以获得当前的系统时间。四、实验步骤1、打开Linux终端2、输入命令$emacshello.c&(文件名可以自定义)3、编制源程序,注意加入必要的头文件#include,对于信号量,还需要加头文件。4、编译:$gcc-ohellohello.c–lpthread对于是信号量,编译时还需要加-lrt参数。5、执行:./hello五、实验

3、要求写出完整的源程序,给出程序执行的结果。串行实验源代码如下:#include#include#include#include#defineLENvoidmain(){time_tt1,t2;doubleD[LEN];inti;doublesum=0.0;t1=clock();for(i=0;i#include

4、tdio.h>#include#include#defineLENpthread_tthread[4];pthread_mutex_tmut;intnumber=0,i;doubleD[LEN];doublesum=0.0;void*thread1(){for(i=0;i

5、ex_lock(&mut);sum+=D[i];pthread_mutex_unlock(&mut);}pthread_exit(NULL);}void*thread3(){for(i=0;i

6、d_exit(NULL);}voidthread_create(void){inttemp;memset(&thread,0,sizeof(thread));if((temp=pthread_create(&thread[0],NULL,thread1,NULL))!=0)printf("线程1创建失败!");elseprintf("线程1被创建");if((temp=pthread_create(&thread[1],NULL,thread2,NULL))!=0)printf("线程2创建失败");elseprintf("线程2被创建");if((temp=pth

7、read_create(&thread[2],NULL,thread3,NULL))!=0)printf("线程3创建失败");elseprintf("线程3被创建");if((temp=pthread_create(&thread[3],NULL,thread4,NULL))!=0)printf("线程4创建失败");elseprintf("线程4被创建");}voidthread_wait(void){if(thread[0]!=0){pthread_join(thread[0]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。