Вниз
Скачать: CL | DM;

Быстродействие потоков   Найти похожие ветки 

← →
Piter ©   (2005-09-17 14:00) [0]

В программе имеется порядка 10-20 потоков, которые выполняют различные задачи, с передачей управления во внешние DLL по наступлению некоторых событий и т.д.

Известно, что создания/уничтожение потока занимает больше времени, чем остановка/Запуск.
Вопрос - имеет смысл ли на таком количестве потоков мучаться с синхронизацией, с выборкой задач, чтобы работали постоянно те же самое 10 потоков, но переключались с одной задачи на другую или ничего страшного, если потоки будут создаваться/уничтожаться заново?


← →
Eraser ©   (2005-09-17 14:08) [1]

Всё зависит от того, сколько задач необходимо выполнять, если на порядок больше чем 10-20 потоков, тогда имеет смысл.


← →
TUser ©   (2005-09-17 14:18) [2]

При таком кол-ве потоков - ИМХО, не имеет смысла.


← →
Piter ©   (2005-09-17 14:20) [3]

так я для того и привел пример - одновременно будут работать 10-20 потоков...


← →
Sergey_Masloff   (2005-09-17 14:24) [4]

У тебя 20 процессоров на машине?


← →
Piter ©   (2005-09-17 14:29) [5]

Sergey_Masloff   (17.09.05 14:24) [4]

к чему такой вопрос?


← →
DrPass ©   (2005-09-17 14:40) [6]


> Piter ©   (17.09.05 14:29) [5]
> Sergey_Masloff   (17.09.05 14:24) [4]
>
> к чему такой вопрос?

Потому что использование многих потоков на одном процессоре только замедляет (хоть и незначительно) выполнение программы. Обычно достаточно всего двух - один обслуживает интерфейс, второй выполняет работу


← →
Piter ©   (2005-09-17 23:59) [7]

DrPass ©   (17.09.05 14:40) [6]

ну обычно - это обычно. А если допустим программа плагино-расширяемая? Тогда плагины могут "задержать" поток у себя (мало что они там делают). А при этом нужна возможность работы других плагинов и самой программы... так что проблема актуальна.


← →
Defunct ©   (2005-09-18 01:50) [8]

> так что проблема актуальна.

;>
а решение проблемы - не актуально! ;>

imho наверное лучше запускайть задачу каждого плагина отдельным потоком.


← →
DrPass ©   (2005-09-18 11:22) [9]


> А если допустим программа плагино-расширяемая?

Тогда при подключении плагина создавай новый поток, и убивай его после отключения. В противном случае, если захочешь разрулить управление плагинами между десятком постоянных потоков, рискуешь получить такого монстра, что сам через полгода в нем не разберешься :)
А нужна ли синхронизация - зависит от логики программы. Не зная ее, однозачно не ответишь


← →
Piter ©   (2005-09-18 12:05) [10]

Да, я уже тоже пришел к такому мнению - каждому плагину - по потоку :)

И пусть они там че хотят с этим потоком делают - их проблемы :)


← →
марсианин ©   (2005-09-19 00:43) [11]

а что делает программа, если не секрет?


← →
Игорь Шевченко ©   (2005-09-19 00:59) [12]

Пул потоков не оптимальнее ли будет использовать ? Некий диспетчер, который принимает запросы на одновременную обработку фиксированным количеством потоков. Рихтер с братом его Кларком описывают пример такой работы в "Программировании серверных приложений для Windows 2000".

Вопрос про количество процессов не просто так задан, на него надо ответить.


← →
Piter ©   (2005-09-19 04:09) [13]

марсианин ©   (19.09.05 0:43) [11]
а что делает программа, если не секрет?


пока очень мало :) А там посмотрим...

Игорь Шевченко ©   (19.09.05 0:59) [12]
Пул потоков не оптимальнее ли будет использовать ?


думал. Черт его знает - дело для меня новое, и имеет ли смысл на 20 потоках это реализовывать?

Игорь Шевченко ©   (19.09.05 0:59) [12]
Вопрос про количество процессов не просто так задан


нигде не вижу такого вопроса.


← →
Котик Б   (2005-09-19 09:09) [14]

>Известно, что создания/уничтожение потока занимает больше времени, чем остановка/Запуск.
А может лучше померять на твоей задаче ?


← →
Игорь Шевченко ©   (2005-09-19 10:08) [15]


> нигде не вижу такого вопроса.


[4]


← →
Думкин ©   (2005-09-19 10:10) [16]

> Игорь Шевченко ©   (19.09.05 10:08) [15]

Придерутся. :) Процесс <> процессор.

"Не советую. Съедят-с." (с) Какой-то мультик.


← →
Piter ©   (2005-09-19 11:40) [17]

Игорь Шевченко ©   (19.09.05 10:08) [15]

Ну да, сами понимаете. Процесс и процессор разные вещи.

Так какой вопрос? Есть ли много процессоров на машине или будет ли запускаться много копий моего приложения, или что имелось в виду?


← →
Игорь Шевченко ©   (2005-09-19 11:57) [18]

Piter ©   (19.09.05 11:40) [17]

А...я перепутал. Конечно же, я имел в виду количество процессоров. Поздно уже было.

Думкин ©   (19.09.05 10:10) [16]

"Тогда ко мне под машину зашел кот Василий. С минуту  он  внимательно
следил  за  моими  руками,  а  потом  произнес вполголоса, но явственно: "Не советую, гражданин...   мнэ-э...  не  советую.  Съедят",  после  чего  сразу удалился, подрагивая хвостом."
(с) Понедельник начинается в субботу


← →
Думкин ©   (2005-09-19 12:08) [19]

> Игорь Шевченко ©   (19.09.05 11:57) [18]

:))))))))
Точно. Вот я как тот кот, все помню, а вспомнить точно - не могу. :) Склероз.


← →
Piter ©   (2005-09-19 18:59) [20]

Игорь Шевченко ©   (19.09.05 11:57) [18]
Конечно же, я имел в виду количество процессоров


ну у меня один процессор. У конечных пользователей в большинстве случаев, думаю, тоже будет один процессор.

Но я так и не понял смысла вопроса.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.023 c
2-1125055920
KyRo
2005-08-26 15:32
2005.10.09
Как отслеживать первую запись ?


1-1126848668
Ольга
2005-09-16 09:31
2005.10.09
Writeln в консольном приложении


1-1127069654
antikaban
2005-09-18 22:54
2005.10.09
конвертирование файлов


14-1126951227
Piter
2005-09-17 14:00
2005.10.09
Быстродействие потоков


1-1127126173
Николай1
2005-09-19 14:36
2005.10.09
TreeView назначить событие на конкретный узел




   Наверх