Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2012, 10:58   #1
shipa988
Новичок
Джуниор
 
Регистрация: 05.10.2012
Сообщений: 2
Печаль Потоки

всем привет) помогите плиз.
Проблема в следующем: есть программа в которой создано несколько потоков каждый выполняет свою определенную функцию. так например-
1 поток. считывает имена файлов с диска-передает во второй в очереди
2 поток. считывает очередь с именами файлов, считывает их с диска и преобразует их определенным образом (ну скажем выполняет преобразование X) и передает файлы(массив байт) в очередь следующему потоку.
3 поток. считывает файлы с очереди и выполняет преобразование Y-более сложное и длительное чем X и передает следующему потоку
4 поток. считывает файлы с очереди и записывает преобразованные файлы на диск.

При этом каждый поток 1,2,3,4-используют отдельные dll


при работе программы на 8 ядерной тачке общая загрузка проца 15 процентов!!!
скорость работы программы меня не устраивает!

когда добавляю еще потоков(5 штук) типа 3 потока которые выполняют преобразование Y (перед этим 2 поток равномерно раскидывает файлы на все 5 потоков 3 типа) скорость работы программы не увеличивается!! в среднем количество обработанных файлов одинаковое что для 1 потока 3 вида что для 2х или 5... при этом проц все также на 15 процентах-не более!!!!

примерная схема работы на рисунке)))
Вопрос: почему не получается прирост производительности???
Вопрос: как можно сделать так чтобы проц загружался прогой на максимум?????
Изображения
Тип файла: jpg схема.jpg (86.8 Кб, 169 просмотров)
shipa988 вне форума Ответить с цитированием
Старый 05.10.2012, 11:51   #2
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

ОС 32 или 64 битная ? И какую сборку делаешь под х86, 64 или AnyCPU
Guy вне форума Ответить с цитированием
Старый 05.10.2012, 15:37   #3
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

попробуйте
Код:
thread.Priority = ThreadPriority.Highest;
или через
http://pinvoke.net/default.aspx/kern...dPriority.html
можно поставить THREAD_PRIORITY_TIME_CRITICAL

Последний раз редактировалось Reskov; 05.10.2012 в 15:41.
Reskov вне форума Ответить с цитированием
Старый 05.10.2012, 16:17   #4
shipa988
Новичок
Джуниор
 
Регистрация: 05.10.2012
Сообщений: 2
По умолчанию

ОС на которой пишу 32 битная и для которой пишу 64-битная. А вот сборка не помню...хорошая мысль) завтра же посмотрю) с приоритетом тоже попробую . спасибо.- завтра напишу что получилось!)
shipa988 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки Базиля Общие вопросы Delphi 11 10.08.2012 15:50
[C#] Потоки Lemo C# (си шарп) 2 24.05.2011 21:50
Потоки. FieStik Общие вопросы C/C++ 4 23.05.2011 14:12
Потоки RedScreenOfLife Общие вопросы C/C++ 5 07.03.2011 14:30
потоки Cpluser Общие вопросы .NET 5 15.02.2011 22:17