Ejemplo_3.cpp
Multiplicacion de matrices en paralelo con hilos// 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; }
Leave a Comment