資源簡介
多線程矩陣乘法:傳入兩個4*4矩陣A、B,求出A×B的結果矩陣C;要求:(1)主線程接受用戶輸入的矩陣A/B的數據,并打印原始矩陣A/B ;(2)用4個工作線程分別計算結果矩陣C的左上、右上、左下、右下四個2*2區域的結果;(3)主線程等待4個工作線程完成,并打印矩陣C最終的最終結果。
代碼片段和文件信息
/*
5.?多線程矩陣乘法:傳入兩個4*4矩陣A、B,求出A×B的結果矩陣C;
要求:
(1)主線程接受用戶輸入的矩陣A/B的數據,并打印原始矩陣A/B?;
(2)用4個工作線程分別計算結果矩陣C的左上、右上、左下、右下四個2*2區域的結果;
(3)主線程等待4個工作線程完成,并打印矩陣C最終的最終結果。
*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?SIZE?4
int?matrix_A[SIZE][SIZE];
int?matrix_B[SIZE][SIZE];
int?matrix_C[SIZE][SIZE]={0};
void?getMatrix_A();/*輸入矩陣A*/
void?getMatrix_B();/*輸入矩陣B*/
void?outMatrix_A();/*輸出矩陣A*/
void?outMatrix_B();/*輸出矩陣B*/
void?outMatrix_C();/*輸出矩陣C*/
void?*left_up();/*計算矩陣左上區域*/
void?*left_down();/*計算矩陣左下區域*/
void?*right_up();/*計算矩陣右上區域*/
void?*right_down();/*計算矩陣右下區域*/
int?main(int?argcchar?*argv[])
{
????getMatrix_A();
????getMatrix_B();
????outMatrix_A();
????outMatrix_B();
????//使用線程計算矩陣左上、左下、右上、右下四個區域
????pthread_t?tid1tid2tid3tid4;
????pthread_create(&tid1NULLleft_upNULL);
????pthread_create(&tid2NULLleft_downNULL);
????pthread_create(&tid3NULLright_upNULL);
????pthread_create(&tid4NULLright_downNULL);
????pthread_join(tid1NULL);
????pthread_join(tid2NULL);
????pthread_join(tid3NULL);
????pthread_join(tid4NULL);
????outMatrix_C();
????return?0;
}
void?getMatrix_A()/*輸入矩陣A*/
{
????int?ij;
????write(1“Input?matrix?A:\n“16);
????for(i=0;i ????????for(j=0;j ????????????scanf(“%d“&matrix_A[i][j]);
}
void?getMatrix_B()/*輸入矩陣B*/
{
????int?ij;
????write(1“Input?matrix?B:\n“16);
????for(i=0;i ????????
- 上一篇:關系數據的網址名稱,可供進行相關的查詢
- 下一篇:軟件系統建設方案通用模板
評論
共有 條評論