windows下多线程编程完成矩阵乘法

  • S1_514622
    了解作者
  • 934B
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-22 06:06
    上传日期
windows下多线程编程完成矩阵乘法,从而提高效率
multiThread-win2.rar
  • multiThread-win2.txt
    2.3KB
内容介绍
/* 2010-4-9 win32 vs2010 */ #include <iostream> #include <windows.h> #include <process.h> using namespace std; struct Point{ int x; int y; }; int **a; int **b; int **c; int asize_x; int asize_y; int bsize_x; int bsize_y; DWORD WINAPI ThreadProc (LPVOID point) { int x = ((Point *)point)->x; int y = ((Point *)point)->y; c[x][y] = 0; for(int i = 0; i < asize_y; i++) { c[x][y] += a[x][i] * b[i][y]; } return c[x][y]; } int main() { int i = 0; int j = 0; int k = 0; //input each size of the two matrixs cout << "input first Matrix size:"; cin >> asize_x >> asize_y; cout << "input second Matrix size:"; cin >> bsize_x >> bsize_y; //if the first matrix's column is not equal to the second matrix's row, //we can not do the multiplication. if(asize_y != bsize_x) { cout << "wrong input!\n"; return 0; } //Dynamic memory allocations a = new int *[asize_x]; for(i = 0; i < asize_x; i++) { a[i] = new int [asize_y]; } b = new int *[bsize_x]; for(i = 0; i < bsize_x; i++) { b[i] = new int [bsize_y]; } c = new int *[asize_x]; for(i = 0; i < asize_x; i++) { c[i] = new int [bsize_y]; } //input each matrix cout << "input first Matrix:"; for(i = 0;i < asize_x; i++) { for(j = 0; j < asize_y; j++) { cin >> a[i][j]; } } cout << "input second Matrix:"; for(i = 0;i < bsize_x; i++) { for( j = 0; j < bsize_y; j++) { cin >> b[i][j]; } } //create multi threads HANDLE *handle = new HANDLE [asize_x * bsize_y]; Point *point; for(i = 0; i < asize_x; i++) { for(j = 0; j < bsize_y; j++) { point = new Point(); point->x = i; point->y = j; if(!(handle[k++] = CreateThread(NULL, 0, ThreadProc, point, 0, NULL))) { cout << "create thread failed!\n"; return 0; } } } //output the result for (i = 0; i < asize_x; i++) { for(j = 0; j < bsize_y; j++) { cout << c[i][j] << " "; } cout << endl; } cout << endl; //Terminate the threads for (i = 0; i < asize_x * bsize_y; i++) { TerminateThread(handle[i], 0); } for(i=0; i < asize_x; i++) { delete a[i]; delete c[i]; } for(int i=0; i < bsize_x; i++) { delete b[i]; } delete b; delete c; delete a; system("pause"); return 0; }
评论
    相关推荐
    • 图形界面矩阵计算器
      利用Windows API构建的图形应用程序
    • 混淆矩阵
      混淆矩阵
    • LED矩阵-项目开发
      使用Windows远程Arduino库在Windows Phone上拍照并以48x48 RGB LED矩阵显示它们。
    • 并行矩阵乘法
      基于Pthread的多线程并行矩阵乘法,包含1000*1000矩阵随机矩阵生成代码,和串行矩阵乘法的比较,c++实现,Windows系统。
    • 矩阵计算器
      能够实现矩阵加减乘运算,幂运算,数乘运算,转置,行列式,逆矩阵。 能够检测矩阵是否完整,能够识别是否能进行所选择的运算,并且提示出不能进行计算的原因。
    • matrix:电影中看到的绿色,“矩阵”密码的小巧,快速,优雅的Windows屏幕保护程序
      矩阵屏保 描述: Matrix屏幕保护程序是电影中看到的绿色“ Matrix”密码代码的小型,快速且优雅的Windows版本。 最初由J Brown于2003年撰写。 网站: 支持: (c)2011-2021亨利++
    • 矩阵计算器
      可以实现矩阵的加、减、数乘、乘、转置等功能,语言为C++,使用类定义,运用面向对象方法
    • 矩阵运算工具
      产品版本号:矩阵运算工具3.0 试用版 矩阵运算工具,是帷幄软件的核心产品,又称帷幄矩阵运算工具。 矩阵运算工具1.0和2.0为内部测试版本,矩阵运算工具3.0 现在推出试用版。 官方网站:...
    • Taucs-大型稀疏矩阵计算库
      目前最快的大型稀疏矩阵计算库。已经预编译好了lib文件,可以在windows上直接使用。
    • GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz
      guassdb100在redhat上安装包,单机部署的包,安装步骤请看我的文中介绍,经过大量实验搭建总结出来的文档