powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Многопоточность?
14 сообщений из 14, страница 1 из 1
Многопоточность?
    #38348729
Sky Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте

Имеется сторонняя длл. В ней есть одна нужная функция.
На большом количестве итераций она оооочень долго работает. Хотелось бы ускорить, ее раз так в 50.

Для этого я разбивал выполнение на потоки (Thread thread1 = new Thread....) ну и каждый запускался.
В итоге суммарное время все равно не менялось. Что 10 потоков по 100 итераций, что один поток на 1000 итераций.

Отсюда возникает вопрос, это сама сторонняя библиотека не позволяет работать в многопоточном режиме? Или что-то еще...

Еще момент, что на 6ти ядерном сервере работает даже медленнее чем на 2х (хотя на 2х яд win7 а на 6-ти- win serv 2008). То есть не использует ресурсы. (загружает всего 12-13% = 1 ядро из 6). То есть мб еще и сама винда не может его распараллелить на ресурсы компа? (хотя в этом вопросе я не разбираюсь. Это всего лишь предположение)
...
Рейтинг: 0 / 0
Многопоточность?
    #38348807
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sky Dragon,

для начала нити к ядрам привязать(affinity задать) и смотреть на загрузку ЦПУ.
...
Рейтинг: 0 / 0
Многопоточность?
    #38348843
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sky Dragon,

а как ты её цепляешь? для каждого потока единый вызов?

Код: c#
1.
2.
DllImoirt
static extern MyType MyName(....)



если так попробывать. какждому потоку свою dll подргружать? может будет толк?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
DllImport(...)
static extern MyType MyName1(....)  // for Thread1
DllImport(...)
static extern MyType MyName2(....) // for Thread2
DllImport(...)
static extern MyType MyName3(....) // for Thread3
DllImport(...)
static extern MyType MyName4(....)// for Thread4
...
Рейтинг: 0 / 0
Многопоточность?
    #38349130
Фотография Roslyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилSky Dragon,

для начала нити к ядрам привязать(affinity задать) и смотреть на загрузку ЦПУ.

а если потоки из пула использовать, они будут шедулиться на каждый процессор/ядро?
...
Рейтинг: 0 / 0
Многопоточность?
    #38349133
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за библиотека то? есть ли доступ к исходникам?
Есть еще вариант запускать несколько процессов.
...
Рейтинг: 0 / 0
Многопоточность?
    #38349597
Sky Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,
Интересная штука была без привязки к ядру. Если был один поток, то грузилось одно ядро. Если потоков несколько, то грузились все, но по очереди. То есть в момент времени выполнялся только один поток. И общая загрузка ЦП так же не менялась.
Протестить ручную привязку к ядрам пока не получается (для работы длл требуется подключенная железка. И что-то она не прокидывается на виртуалку, где много ядер)


beg-in-er,
Библиотека дотнетовская. Подключаю через референс )


Arm79,
Кода нет. Библиотека китайская )
Попробовал на нескольких процессах. Работают. Грузят оба ядра на 100%. Но тут уже пошла нехватка ресурсов и поэтому время каждого процесса чуть-чуть увеличилось относительна этого же процесса, когда он один.
Забавно... если инициализировать класс этой библиотеки в отдельных потоках, то он валится с эксепшеном. А если в разных процессах, то нормально...
Пытался как-то делать через WCF сервис, но он тоже видимо создавал отдельные потоки для каждого запроса и опять падало же с эксепшеном при инициализации класса...

Roslyn,
С пулами не работал. надо почитать
...
Рейтинг: 0 / 0
Многопоточность?
    #38349604
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за железка?
...
Рейтинг: 0 / 0
Многопоточность?
    #38349717
Sky Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

сканер отпечатков пальцев.

Короче... прочитал мануал. Там сказано, что эта функция сама по себе такая медленная...
...
Рейтинг: 0 / 0
Многопоточность?
    #38349737
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в функции могут критические секции стоять
...
Рейтинг: 0 / 0
Многопоточность?
    #38349842
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisв функции могут критические секции стоять

+1

Задачу похожего типа решали когда-то. Был диспетчер процессов, который получал информацию. Он запускал нужное количество дочерних процессов и каждому в асинхронном режиме передавал инфу для обработки. Полученный результат от дочернего процесса через диспетчер доставлялся клиенту. Диспетчер - http + tcp, взаимодействие с дочерними процессами через pipe (всё - wcf-сервисы)
...
Рейтинг: 0 / 0
Многопоточность?
    #38349964
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а посмотрите через рефлектор? Может там просто lock стоит :)
...
Рейтинг: 0 / 0
Многопоточность?
    #38350134
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sky Dragonсканер отпечатков пальцев.


Если функция обращается к сканеру и что-то с него считывает, например, через COM-порт, то распареллелить это никак не получится
...
Рейтинг: 0 / 0
Многопоточность?
    #38350749
Фотография Torre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisSky Dragonсканер отпечатков пальцев.


Если функция обращается к сканеру и что-то с него считывает, например, через COM-порт, то распареллелить это никак не получится
Верно, но можно расспаралелить инстанс, который получается с либы
...
Рейтинг: 0 / 0
Многопоточность?
    #38351149
Sky Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сканер юсбишный.
И ведь несколько процессов с ним работают)

Короче вопрос конечно интересный, но уже проблему ускорения решили иначе )
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Многопоточность?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]