实验二多线程应用程序设计

实验二多线程应用程序设计

ID:41259924

大小:457.19 KB

页数:12页

时间:2019-08-20

实验二多线程应用程序设计_第1页
实验二多线程应用程序设计_第2页
实验二多线程应用程序设计_第3页
实验二多线程应用程序设计_第4页
实验二多线程应用程序设计_第5页
资源描述:

《实验二多线程应用程序设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、成绩信息与通信工程学院实验报告课程名称:嵌入式系统原理与应用实验题目:多线程应用程序设计指导教师:班级:学号:学生姓名:一、实验目的和任务1.掌握VI编译环境。2.掌握GCC编译命令。3.掌握多个文件共同编译方法。4.掌握GDB调试命令。5.了解多线程程序设计的基本原理。6.学习pthread库函数的使用。二、实验设备7.硬件:PC机8.软件:LINUX操作系统、虚拟机三、实验内容及原理1.在VI编辑器里编写两个文件(其中一个为主程序,实现显示“hello,linuxworld,Iam1405014XXXXXX”,,一个为子程序,实现1~n的乘法),为

2、其书写头文件,共同编译为可执行文件,执行,观察运行结果。学习书写MAKEFILE文件,编译,执行,观察结果。利用GCC编译(加参数-g)为可执行文件,利用GDB调试,学习GDB调试命令。1.编写多线程程序设计。编译并运行,观察结果。(可参照课件或实验指导书)一、实验步骤或程序流程1.Gcc编译实验1)编写实验代码:图3.1实验主程序图3.2实验子程序2)编写Makefile文件:图3.3Makefile文件1)Make执行Makefile文件,生成可执行程序并运行:图3.4执行2)Gdb调试运行:图3.5gdb调试显示代码图3.6gdb调试断点运行图3

3、.7gdb调试逐步运行1.多线程程序设计:1)对实验代码进行gcc编译:图3.7gcc编译生成可执行文件2)运行结果:图3.8程序运行结果一、实验数据及程序代码1.Gcc编译实验:1)主程序:#include"stdio.h"#include"my2.h"intmain(){printf("hello.Linuxworld.Iam1405014232zzm");my2();}2)实验子程序:#include"my2.h"#include"stdio.h"voidmy2(){inti=1;floats=1intN;printf("Pleaseinpu

4、tn:");scanf("%d",&N);for(i,i<=n,i++)s*=i;printf("result:");printf("%f",s);}3).h头文件:#ifndef_MY2_H#define_MY2_Hintmain();voidmy2();#endif4)makefile执行文件:zzmgo:my2.omy1.ogcc-ozzmgomy2.omy1.omy1.o:my1.cmy2.hgcc-cmy1.cmy2.o:my2.cmy2.hgcc-cmy2.cclean:rm-rfmy1.omy2.ozzmgo1.多线程程序设计:#in

5、clude#include#include#include"pthread.h"#defineBUFFER_SIZE16/*Circularbufferofintegers.*/structprodcons{intbuffer[BUFFER_SIZE];/*theactualdata*/pthread_mutex_tlock;/*mutexensuringexclusiveaccesstobuffer*/intreadpos,writepos;/*positionsforreadingandwrit

6、ing*/pthread_cond_tnotempty;/*signaledwhenbufferisnotempty*/pthread_cond_tnotfull;/*signaledwhenbufferisnotfull*/};/*--------------------------------------------------------*//*Initializeabuffer*/voidinit(structprodcons*b){pthread_mutex_init(&b->lock,NULL);pthread_cond_init(&b->

7、notempty,NULL);pthread_cond_init(&b->notfull,NULL);b->readpos=0;b->writepos=0;}/*--------------------------------------------------------*//*Storeanintegerinthebuffer*/voidput(structprodcons*b,intdata){pthread_mutex_lock(&b->lock);/*Waituntilbufferisnotfull*/while((b->writepos+1

8、)%BUFFER_SIZE==b->readpos){printf("waitfornotfu

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

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

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