Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.024 c
10-1103530831
Григорьев Антон
2004-12-20 11:20
2005.10.09
Стандартный маршалинг в Delphi


14-1127249587
Джо
2005-09-21 00:53
2005.10.09
Проверка доступности сайта


4-1123866267
OlegTrubin
2005-08-12 21:04
2005.10.09
PlaySound асинхронно


14-1126494834
Андрей Николаевич
2005-09-12 07:13
2005.10.09
СисАдмин "вешает лапшу на уши" или я не прав?


2-1125592985
pathfinder
2005-09-01 20:43
2005.10.09
работа с текстовым файлом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский