Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: 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 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.045 c
1-1126861409
Slider007
2005-09-16 13:03
2005.10.09
Превью отчета на форме


3-1125041082
ААР
2005-08-26 11:24
2005.10.09
Описание таблицы Btrieve


2-1125154685
Иван Семенов
2005-08-27 18:58
2005.10.09
Как перебрать все компоненты на двух формах?


14-1126875550
Ezh
2005-09-16 16:59
2005.10.09
111


2-1125246461
Андрей Молчанов
2005-08-28 20:27
2005.10.09
ShellExecute