实验二 多线程应用程序设计.doc
文本预览下载声明
.
.
成绩
信息与通信工程学院实验报告
课程名称:嵌入式系统原理与应用
实验题目:多线程应用程序设计 指导教师:
班级: 学号: 学生姓名:
实验目的和任务
掌握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
显示全部