电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

多线程解决矩阵相乘问题VIP免费

多线程解决矩阵相乘问题_第1页
1/8
多线程解决矩阵相乘问题_第2页
2/8
多线程解决矩阵相乘问题_第3页
3/8
多线程编程实现矩阵乘法 一、实验目的 通过实验,熟悉基于Win32 线程库和Pthread 线程库的编程环境,掌握利用Windows API 和 Pthread API 进行多线程编程的方法,进一步加深对线程概念以及多线程编程相关事项的理解。 二、实验内容 1.在 Windows操作系统上,利用Windows API编写应用程序实现矩阵乘法。 2.在 Linux操作系统上,利用Pthread API编写应用程序实现矩阵乘法。 3.在上述两种环境下,实现相乘操作的两个矩阵均作为应用程序的输入参数动态生成,并输出计算结果。 4.在程序实现过程中,要求每个乘积矩阵元素的计算过程均由一个独立的线程实现。 三、实验步骤 (1)设计思路 ① 动态生成矩阵A,B,C 并为它们分别赋值,其中C 默认为0 ② 创建多个线程去计算矩阵C 中每个元素,其中为每个线程传入一个结构体data,它的两个数据成员为C 的行号和列号 ③ 输出矩阵C (2)流程图 四、主要数据结构 本实验用了一个结构体类型data 用于传递行号和列号 五、程序运行时的初值和运行结果 ① win32 下 输出矩阵C 的元素 结束 开始 动态矩阵A,输入其行数与列数row × rc 动态输入矩阵B 的列数col 为矩阵A 赋值 为矩阵B 赋值 生成row × col个线程 计算矩阵c 每个元素 C=A× B ② pthread 六、实验体会: 本次实验总体感觉不难,主要就是掌握win32 和 pthread 中线程的使用。具体的算法就是矩阵的乘法计算,较容易实现。其实,原理理解清楚,理解透,各个语言去实现都是一样的,顶多就是函数不一样而已。 七、源程序并附上注释 ①用win32 实现 #include #include #include int row,rc,col; //矩阵A 和 B 的行数列数 int **A; //矩阵ABC,用二维数组表示 int **B; int **C; struct v { int i; //行号 int j; //列号 }; //计算矩阵C 中的某个元素 DWORD WINAPI Sum(LPVOID param) { struct v *DATA = (struct v*)param;//强制转换,lpvoid->struct v for (int x=0;xi][DATA->j]+=A[DATA->i][x]*B[x][DATA->j];//计算A 中某行×B 中某列 return 0; } //输出矩阵 C void output() { printf("C=A*B,C is:\n"); for (int x=0;x

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

多线程解决矩阵相乘问题

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群