Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для 77Bender77
18 / 18 / 2
Регистрация: 16.12.2010
Сообщений: 145

Скорость сортировки не увеличивается с применением многопоточности

23.11.2012, 15:34. Показов 1272. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем доброго времени суток!
реализую многопоточность. на форме выбирается кол-во и приоритет потоков, в dataGridView выводится время выполнения потока (+всякая инфа), инфа обновляется по таймеру раз в 1мс.
потоки сортируют массив в 50к (каждому свой, одинаковый)
в среднем время сортировки занимает 11-12 сек
проблема: при запуске потоков с высоким приоритетом запуск идет ~ эти же 11-12 сек, при этом форма подвисает, а потом выводится пустой dataGridView (только с надписью complete для высокого приоритета)
C#
1
myThread[] workThread = new myThread[50];
C#
1
2
3
4
5
6
7
8
9
10
11
12
for (j = 0; j < 5; j++)
                    for (i = 0; i < threadsAmount[j]; i++)
                    {
                        dataGridView1.Rows.Add();
                        workThread[n] = new myThread("thread" + (n + 1), tp[j]);
                        CopyArray(workThread[n].threadArray);
                        workThread[n].thread.Start();
                        n++;
                    }
                button1.Enabled = false;
                nowTime = DateTime.Now;
                timer1.Start();
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void timer1_Tick(object sender, EventArgs e)
        {
            for (i = 0; i < n; i++)
                if (workThread[i].thread.IsAlive)
                {
                    dataGridView1.Rows[i].Cells[0].Value = workThread[i].thread.Name;
                    dataGridView1.Rows[i].Cells[1].Value = "in progress";
                    dataGridView1.Rows[i].Cells[2].Value = workThread[i].thread.Priority;
                    dataGridView1.Rows[i].Cells[3].Value = (DateTime.Now - nowTime).TotalSeconds;
                }
                else dataGridView1.Rows[i].Cells[1].Value = "complete";
        }
в классе myThread реализовано создание одного потока, с именем, приоритетом + метод для сортировки массива
для потоков с низким приоритетом все пучком

 Комментарий модератора 
Настало время продумывать заголовки самостоятельно.
Тема не может называться "многопоточность" в принципе
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2012, 15:34
Ответы с готовыми решениями:

Составить программы для пузырьковой сортировки и сортировки посредством выбора с применением оператора while
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить программы для пузырьковой...

Не увеличивается скорость вращения кулера
Привет. Ноут стал сильно нагреватся, при этом я почти не слышу работу кулера. Сначала зашел в биос, там не нашел как увеличиь обороты,...

Скорость записи двухслойных DVD-R увеличивается
Совсем скоро оптические приводы смогут записывать данные на двухслойные носители формата DVD-R на скорости до 12Х – уже в следующем месяце...

5
4 / 4 / 0
Регистрация: 21.04.2012
Сообщений: 132
23.11.2012, 15:49
хм. у меня примерна таже проблема..
В чем разница добавления компонента динамически и в режиме конструктора
жду ответов. пока самостоятельно, побороть не смог. за исключением того, что бы ListView создавать в дизигенере, а не в коде.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
23.11.2012, 18:17
не знаю насколько у потоков высокий приоритет, но думаю, раз уж зависает, то скорее всего поставил так, что приоритет явно повыше, чем у потока в котором запускается форма. Логично, поэтому и поток формы все время в ожидании и форма виснет. Попробуй создать меньше потоков, либо приоритет понизить.

Добавлено через 1 минуту
время Timer.Interval побольше поставь
1
 Аватар для 77Bender77
18 / 18 / 2
Регистрация: 16.12.2010
Сообщений: 145
23.11.2012, 20:27  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
Попробуй создать меньше потоков, либо приоритет понизить.
в этом же заключается вся суть задания) сравнение времени выполнения задачи потоками с разным приоритетом
Цитата Сообщение от IamRain Посмотреть сообщение
приоритет явно повыше, чем у потока в котором запускается форма. Логично, поэтому и поток формы все время в ожидании и форма виснет.
а вот это уже может быть правдой
тогда подскажите как создать поток (фоновый?), чтобы из него вызывать остальные потоки

скрин результата работы программы :
действительно похоже, что главный поток приоритета Normal
Миниатюры
Скорость сортировки не увеличивается с применением многопоточности  
0
 Аватар для 77Bender77
18 / 18 / 2
Регистрация: 16.12.2010
Сообщений: 145
23.11.2012, 20:29  [ТС]
кстати, интервал сменил, ничего не изменилось
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
24.11.2012, 11:43
дело не в том, откуда ты будешь запускать свои потоки - также из фонового или из потока формы, дело в том что процессор не резиновый, в любом случае в один и тот же момент времени на одном ядре выполняется только один поток.
Действительно параллельное выполнение может быть только если у тебя более одного ядра в проце. В общем, простои всегда будут, вопрос уже в том какой поток будет простаивать. Как я понял, у тебя это поток формы, поскольку все остальные с приоритетом выше, чем у него. Экспериментируй.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2012, 11:43
Помогаю со студенческими работами здесь

При увеличении радиуса, скорость падает, а расстояние все равно увеличивается
Такой вопрос, почему при увеличении радиуса, скорость падает, а расстояние все равно увеличивается? program ex3; var T: Text; x,...

ПК подвисает раз в 15 минут, при этом увеличивается скорость вращение кулера
проблема такая во время работы пк раз в 15 мин виснет(лагает сильно), вентилятор издаёт звук(работает по мощнее) и пк начинает лагать,...

Не увеличивается скорость кулера при нагрузке видеокарты. Acer aspire v3 571g
Добрый день. Имею данный ноут, в целом доволен, но уже давно есть данная проблема. Когда например запускаю какое-нибудь приложение, или...

От чего зависит скорость в Thread и почему она увеличивается при перемещении окна
Здравствуйте! Создаю поток в нем бесконечный цикл. Сильно отличается скорость цикла потока от цикла программы и почему при перемещении окна...

Сосздание счета на основании таблици с применением сортировки по Фамилии
Доброго времени суток! помогите пожалуйста! вы моя последняя надежда... я не сильна в програмировании, вот который день ломаю голову.....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru