Ejemplo_3.cpp
Multiplicacion de matrices en paralelo con hilosTomasOrtellado
c_cpp
10 months ago
1.6 kB
6
Indexable
// Multiplicacion de matrices en paralelo con hilos
#include <iostream>
#include <thread>
#include <vector>
// define tama�o de las matrices
const int N = 4;
// matrices de entrada para la multiplicacion
int matriz1[N][N] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
int matriz2[N][N] = {{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}, {4, 4, 4, 4}};
// matriz resultado (inicia con todos 0)
int resultado[N][N] = {0};
// Funci�n para multiplicar una fila de la primera matriz con la segunda matriz
void multiplicarFila(int fila) {
// escanea las columnas de la matriz resultado
for (int col = 0; col < N; ++col) {
// calcula el valor de la posici�n resultado [fila][col]
for (int k = 0; k < N; ++k) {
resultado[fila][col] += matriz1[fila][k] * matriz2[k][col];
}
}
}
int main() {
// crea un vector para almacenar los hilos
std::vector<std::thread> hilos;
// lanza un hilo para cada fila de la matriz resultado
for (int i = 0; i < N; ++i) {
hilos.push_back(std::thread(multiplicarFila, i)); // cada hilo calcula una fila
}
// espera a que todos los hilos terminen su ejecuci�n
for (auto& hilo : hilos) {
hilo.join();
}
std::cout << "Matriz resultado:\n";
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
std::cout << resultado[i][j] << " "; // muestra cada valor de la matriz resultado
}
std::cout << "\n";
}
return 0;
}
Editor is loading...
Leave a Comment