|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.11.2015, 17:46 | #1 |
Форумчанин
Регистрация: 05.12.2009
Сообщений: 253
|
Задача на многопоточность
Добрых суток уважаемые форумчане. Столкнулся с такой задачей:
Написать multithread функцию, получающую в качестве аргументов «n x n» массив «a» вещественных чисел, целое число «n», номер нити (thread) «k», общее количество нитей (threads) «p», и возвращающую ненулевое значение, если массив «а» симметричен (т.е. «aij»= «aji»), 0 в противном случае. При этом должна быть обеспечена равномерная загрузка всех задач. Основная программа должна вводить числа «p», «n» и массив «а» (из файла или по заданной формуле), запускать задачи, вызывать эту функцию и выводить на экран результат её работы. Написал код с одним основным потоком и задумался… Код:
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
|
22.11.2015, 18:18 | #2 |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
Условие задачи многое не договаривает по конечным требованиям к программе.
Но смею предположить подобный вариант: - вы задаете конечное число потоков (то самое k по условию) - вы задаете сам массив и указываете номер потока (номер потока здесь понимается именно в контексте вашей задачи, допустим, что это число от 1 до k), в котором желаете проверить его симметричность. - при необходимости, задаете иной массив и номер потока для него. В конечном счете, основная идея вашей программы будет сводиться к тому, что вы должны правильно распределить нагрузку между потоками. Вы должны учитывать, к примеру, что если поступил массив для вычисления в поток p, а этот поток сейчас занят, то по возможности, вам необходимо провести вычисления в другом потоке, при условии, что таковой имеется и он свободен в данный момент. |
22.11.2015, 18:35 | #3 |
Форумчанин
Регистрация: 05.12.2009
Сообщений: 253
|
Вообще ощущение, что эту задача вырвана из контекста другой задачи, меня попросила посмотреть ее одна очаровательная девушка, я сначала посмотрел и сказал хрень какаято ты не правильно условие сформулировала, на что она принесла задание на бумаге откуда я все и переписал.
То есть задаем массив и номер потока который будет проверять непосредственно этот массив, если поток занят, то массивом занимается другой поток. Я правильно понял вашу идею?
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
|
22.11.2015, 18:46 | #4 | |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
Цитата:
Да, я именно так эту задачу и понимаю. Но здесь что-то действительно не договаривают. Как вообще хотят задавать исходные данные? К примеру, через файл или ввод с клавиатуры. В зависимости от выбранного способа задания исходных данных, немного будет отличаться алгоритм работы вашего главного потока, который, к примеру, возьмет на себя обязательство вывода результатов вычисления другими потоками. Если все из файла - это будет даже проще. Оговорили формат данных хранящихся в этом файле. Распределили массивы по потокам и ожидаем пока они закончат вычисления. Далее выводим на экран результаты. А если ввод с клавиатуры, то здесь поинтересней. Главный поток висит в ожидании операции ввода/вывода. Посему, нужно решить, как ему выводить данные о вычислениях в потоках. |
|
22.11.2015, 18:50 | #5 |
Форумчанин
Регистрация: 05.12.2009
Сообщений: 253
|
Спасибо за помощь. Другого варианта я тоже не вижу.
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многопоточность | ETUN4 | Общие вопросы Delphi | 1 | 22.08.2015 21:17 |
С++ многопоточность | kineziz | Общие вопросы C/C++ | 3 | 11.09.2012 13:20 |
многопоточность | blacktener | Общие вопросы по Java, Java SE, Kotlin | 1 | 25.07.2012 13:18 |
Многопоточность в C | Ryabinin313 | Общие вопросы C/C++ | 2 | 30.10.2011 18:02 |
Многопоточность | JakSon | Общие вопросы Delphi | 10 | 27.12.2009 02:19 |