Matrix multiplication is one of the basic operations that you can do with matrices and a classic problem used in concurrent and parallel programming courses. If you have a matrix A with m rows and n columns and another matrix B with n columns and p columns, you can multiply both matrices and obtain a matrix C with m rows and p columns. You can check https://en.wikipedia.org/wiki/Matrix_multiplication to find a detailed description about this operation.
In this section, we will implement a serial version of an algorithm to multiply two matrices and three different concurrent versions. Then, we will compare the four solutions to see when concurrency gives us a better performance.