Разработайте многопоточное приложение, выполняющее вычисление произведения матриц A (m×n) и B (n×k). Элементы cij матрицы произведения С = A×B вычисляются параллельно p однотипными потоками. Если некоторый поток уже вычисляет элемент cij матрицы C, то следующий приступающий к вычислению поток выбирает для расчета элемент cij+1, если j<k, и ci+1k, если j=k. Выполнив вычисление элемента матрицы-произведения, поток проверяет, нет ли элемента, который еще не рассчитывается. Если такой элемент есть, то приступает к его расчету. В противном случае отправляет (пользовательское) сообщение о завершении своей работы и приостанавливает своё выполнение. Главный поток, получив сообщения о завершении вычислений от всех потоков, выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой организуйте через критическую секцию, мьютекс или событие с автоматическим сбросом. Для хранения перемножаемых матриц и матрицы-результата перемножения используйте функции семейства Win 32 API VitrualXXX() для управления виртуальной памятью. Разработайте необходимый пользовательский интерфейс для ввода размерностей перемножаемых матриц M, N и K, и их элементов; запуска расчета, задания количества вычисляющих потоков, вывода матрицы-произведения. Для ускорения ввода предусмотрите возможность не заполнять нулевые элементы (не заполненные элементы матриц должны сами инициализироваться нулями). Например, для ввода каждой матрицы предусмотрите три поля ввода: номер строки, номер столбца, элемент матрицы (на пересечении этой строки и этого столбца); и кнопку для команды ввода элемента в матрицу. Для вывода результата предусмотрите использование прокруток по строкам и столбцам матрицы-результата с окном вывода 10×10. Разработайте файл протокола, в который должна записываться следующая информация: размерности перемножаемых матриц, их элементы, элементы результата, а также информацию о том, каким потоком (номером) вычислен данный элемент матрицы. В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.
Тип: Курсовая
Предмет: C/C++
Курсовая работа по дисциплине Компьютерные системы конечноэлементных расчетов
Стоимость: 2900 руб.
Тип: Курсовая
Предмет: C/C++
Вычисление определенных интегралов методом прямоугольников
Стоимость: 2775 руб.
У каждого студента рано и поздно настаёт день «Х». И это не свадьба или кризис среднего возраста, а защита курсовой или дипломной работы.Как же выглядит правильная защита курсовой работы и как к ней подготовиться, чтобы чувствовать себя уверенно? Читайте статью и вы узнаете, как проходит защита кур…
Читать дальшеХотите знать, как сдать курсовую без проблем? Позаботиться о грамотном оформлении приложений в курсовой работе.А как выглядят и оформляются приложения в курсовой по ГОСТ, мы расскажем в статье. И в конце приведём пример приложений в курсовой работе, оформленных по всем правилам. Читайте наши советы…
Читать дальше