![]() |
|
Модераторы: Poseidon |
![]()
|
|
| ausar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Привет всем.
Пожалуйста помогите доделать программу. Необходимо сложить 2 матрицы А и В в С с использованием нитей. одна нить складывает с начала до половины а вторая с половины до конца матрицы. Никак не могу разобраться как передать параметры. Здесь кажется нужно использовать указатели?
|
|||
|
||||
| t_gran |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
ausar, вы правы. В вашем коде это одна из основных ошибок. Теперь по порядку: Ошибка 1: Действительно вы создаёте структуру в которой жёстко создаёте 3 массива заданной длинны, а потом хотите один массив присвоить другому.
Но у вас ещё интереснее:
Это я даже не могу определить как это. По адресу в структуре p->a занести элемент по не существующему адресу a[N][N]. Исправляется довольна просто:
Ошибка 2: Вы до конца понимаете, что такое поток? Дело в том, что вы скармливаете структуру с данными одному потоку, затем, тут же меняете параметры и скармливаете эту же структуру другому потоку. В результате мы получаем, что оба потока обрабатывают вторую часть. Почитайте про синхронизацию, будет очень полезно. Но в вашем случае можно сделать проще. Одному потоку скормить одну структуру, а второму другую. Естественно указатели на область с данными ссылаются на один и тот же область памяти, а вот поля start и stop у каждой структуры свои.
Ошибка 3: Вы запускаете оба потока но даже и не собираетесь их ждать.
В результате получаем конечный код (правда я писал на C а не на C++):
Исходник с бинарником ниже Это сообщение отредактировал(а) t_gran - 13.4.2010, 08:09 Присоединённый файл ( Кол-во скачиваний: 2 )
thread.zip 1,47 Kb-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||||||||||
|
|||||||||||||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |