- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
.
成绩
信息与通信工程学院实验报告
课程名称:嵌入式系统原理与应用
实验题目:多线程应用程序设计 指导教师:
班级: 学号: 学生姓名:
实验目的和任务
掌握VI编译环境。
掌握GCC编译命令。
掌握多个文件共同编译方法。
掌握GDB调试命令。
了解多线程程序设计的基本原理。
学习 pthread 库函数的使用。
实验设备
硬件:PC机
软件:LINUX操作系统、虚拟机
实验内容及原理
在VI编辑器里编写两个文件(其中一个为主程序,实现显示“hello,linux world,I am 1405014XXX XXX”,,一个为子程序,实现1~n的乘法),为其书写头文件,共同编译为可执行文件,执行,观察运行结果。学习书写MAKEFILE文件,编译,执行,观察结果。利用GCC 编译(加参数-g)为可执行文件,利用GDB调试,学习GDB调试命令。
编写多线程程序设计。编译并运行,观察结果。(可参照课件或实验指导书)
实验步骤或程序流程
Gcc编译实验
编写实验代码:
图3.1实验主程序
图3.2实验子程序
编写Makefile文件:
图3.3 Makefile文件
Make执行Makefile文件,生成可执行程序并运行:
图3.4 执行
Gdb调试运行:
图3.5 gdb调试显示代码
图3.6 gdb调试断点运行
图3.7 gdb调试逐步运行
多线程程序设计:
对实验代码进行gcc编译:
图3.7gcc编译生成可执行文件
运行结果:
图3.8程序运行结果
实验数据及程序代码
Gcc编译实验:
主程序:
#include stdio.h
#include my2.h
int main()
{
printf(hello.Linux world.I am 1405014232 zzm\n);
my2();
}
实验子程序:
#include my2.h
#include stdio.h
void my2()
{
int i=1;
float s=1
int N;
printf(Please input n:\n);
scanf(%d,N);
for(i,i=n,i++)
s*=i;
printf(result:);
printf(%f,s);
}
.h头文件:
#ifndef _MY2_H
#define _MY2_H
int main();
void my2();
#endif
makefile执行文件:
zzmgo: my2.o my1.o
gcc -o zzmgo my2.o my1.o
my1.o: my1.c my2.h
gcc -c my1.c
my2.o:my2.c my2.h
gcc -c my2.c
clean:
rm -rf my1.o my2.o zzmgo
多线程程序设计:
#include stdio.h
#include stdlib.h
#include time.h
#include pthread.h
#define BUFFER_SIZE 16
/* Circular buffer of integers. */
struct prodcons {
int buffer[BUFFER_SIZE];
/* the actual data */
pthread_mutex_t lock;
/* mutex ensuring exclusive access to buffer */
int readpos, writepos;
/* positions for reading and writing */
pthread_cond_t notempty;
/* signaled when buffer is not empty */
pthread_cond_t notfull;
/* signaled when buffer is not full */
};
/*--------------------------------------------------------*/
/* Initialize a buffer */
void init(struct prodcons * b)
{
pthread_mutex_init(b-lock, NULL);
pthread_cond_init(b-notempty, NULL);
pthread_cond_init(b-notfull, NULL);
b-readpos = 0
您可能关注的文档
- 试验3参数估计与假设检验.doc
- 通过蓝鲸游戏探究怎样避免青少年自我伤害.doc
- 中国法制史期末重点及论述.doc
- 花生乳饮料设计.doc
- 数据库课程设计报告:学生成绩管理系统.doc
- 集中式饮用水水源环境状况评估报告.doc
- 太阳能热水系统招标技术要求.doc
- 单片机实验报告——矩阵键盘数码管显示.doc
- 氧化塘设计实例..doc
- 园林绿化工程施工质量验收规范内容.doc
- 基本面选股组合月报:大模型AI选股组合本年超额收益达6.60.pdf
- 可转债打新系列:安集转债,高端半导体材料供应商.pdf
- 可转债打新系列:伟测转债,国内头部第三方IC测试企业.pdf
- 联想集团PC换机周期下的价值重估.pdf
- 计算机行业跟踪:关税升级,国产突围.pdf
- 科技类指数基金专题研究报告:详解AI产业链指数及基金布局.pdf
- 计算机行业研究:AIAgent产品持续发布,关税对板块业绩影响较小.pdf
- 民士达深度报告:国内芳纶纸龙头,把握变局期崛起机遇.pdf
- 社会服务行业动态:全球首张民用无人驾驶载人航空器运营合格证落地,霸王茶姬冲击美股IPO.pdf
- 通信行业研究:特朗普关税令落地,长期看好国产算力链.pdf
文档评论(0)