0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 5
|
||||||
1 | ||||||
Распаралелить программу08.12.2009, 20:03. Показов 750. Ответов 1
Метки нет (Все метки)
Здравствуйте уважаемые форумчане!
Нужно распаралелить программу которая меняет местами столбцы 2-х мерного массива. Массив размером 10*10 Количество потоков - 5. ОС- WindowsXP IDE - MS Visual Studio 2008 C++ Вот я сделал её, но не приложу ума как распаралелить.
0
|
08.12.2009, 20:03 | |
Ответы с готовыми решениями:
1
Распаралелить select union all Распаралелить алгоритм нахождения кратчайшего пути Распаралелить работу с базой (фоновый процесс) Как распаралелить цикл с помощью второго потока? |
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
09.12.2009, 20:11 | 2 |
Принцип простой. Оформляешь функцию, которая будет делать всю работу в потоке. В твоём смехотворном случае задачей каждого потока будет обменять по 2 числа. Следовательно, функция получает информацию о самом массиве, номерах обмениваемых столбцов и номерах строк, которые надо обработать конкретному потоку. Для создания потоков воспользуйся функцией CreateThread. Она запускает в виде потоков функцию, принимающую указатель на void. Следовательно, тебе надо запихать передаваемую информацию в структурку и дать её адрес потоку. Потоковая функция преобразует адрес void* обратно к указателю на структурку и получит нужную информацию.
Возврат из CreateThread происходит, естественно, сразу. Запущенный поток начинает выполняться отдельно. Он закончится, когда потоковая функция закончит работу (ну или есть способы насильно прервать поток, но оно нам не надо). CreateThread возвращает хэндл (описатель) созданного окна (тип HANDLE). В основном потоке запусти цикл, создающий 5 потоков и собирающий описатели созданных потоков в массив. После чего дождись окончания работы всех потоков при помощи функии WaitForMultipleObjects. На этот момент работа будет завершена и тебе останется вывести результат.
1
|
09.12.2009, 20:11 | |
09.12.2009, 20:11 | |
Помогаю со студенческими работами здесь
2
Как лучше распаралелить задачи, если их количество больше ядер процессора? Составить блок-схему и программу вычисления значения функции + написать программу Зациклить программу, чтобы был выбор: продолжать программу или нет Реализация продления оплаты за программу (помесячная оплата подписки на программу) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |