Tasks:
- Implement a class for a thread pool in which you can perform various tasks. If there are no free threads in the pool, then queue new tasks
- Using this class, calculate the product of two matrices, dividing the problem into different threads (without unnecessary copying)