|
|
|
Как велика разница затрат времени и памяти на процесс и поток?
|
|||
|---|---|---|---|
|
#18+
Вот сценарии. 1) На сервере по DCOM на каждого клиента в отдельных процессах запускаются .exe приложения доступа к данным. Данные между сервером и клиентом передаются в двоичном виде. Каждый процесс существует, пока клиент не закроет своё приложение. 2) На сервере по TСP/IP на каждого клиента создаётся поток с тем же приложением доступа к данным, но в виде .dll. Двочные данные между сервером и клиентом для передачи по TCP/IP преобразуются в текстовый формат много большего объёма. Но алгоритм сжатия (Zip) может этот объём существенно снизить, так что трафик возрасти не должен. Каждый поток существует, пока клиент не закроет своё приложение. Вариант DCOM проще в реализации. Так можно ли существенно сэкономить память и время процессора (пренебрегаем затратами на текстовое перекодирование), используя не многие процессы, а многие потоки - от 10 до 50 на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2014, 21:59 |
|
||
|
Как велика разница затрат времени и памяти на процесс и поток?
|
|||
|---|---|---|---|
|
#18+
Rostislav D. Kudryashov, можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 07:59 |
|
||
|
Как велика разница затрат времени и памяти на процесс и поток?
|
|||
|---|---|---|---|
|
#18+
Процесс создается медленнее, т.к. процесс в т.ч. включает в себя хотя бы один поток. Но основные тормоза не в создании, а в инициализации, т.к. в начале надо внутренности исходными значениями заполнить, какие-нибудь файлы открыть и т.д. и т.п. Поэтому никто не создает процесс или поток в момент появления задания. Это делается заранее. Да и немасштабируемо это. Если одновременно 100 потоков (без разницы в скольки процессах) будет работать на 2-4 ядерном проце, то будет много накладных расходов из-за переключения между ними. Обычно так делают: запускается диспетчер и набор исполнителей. Диспетчер принимает задание и передает свободному исполнителю. Если свободных нет - ставит в очередь. Т.е. исполнитель запущен всегда и ждет когда ему дадут очередное задание. Без разницы в отдельном процессе каждый исполнитель или все в одном разными потоками. Есть разница во взаимодействии потоков одного процесса и разных процессов. Есть хорошая книжка Джеффри РИХТЕР "Windows для профессионалов" там все подробно расписано как процессы и потоки устроены, и еще много интересного. PS Диспетчер можно свой не писать, а взять какую-нибудь очередь сообщений. Например RabbitMQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38750242&tid=1341225]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 420ms |

| 0 / 0 |
