Какова цель maxNumberOfServerInstances в классе NamedPipeServerStream? - PullRequest
6 голосов
/ 11 января 2012

В настоящее время пишу службу Windows в .NET, и я использую именованные каналы, чтобы другие процессы взаимодействовали с моей службой.В более сложных конструкторах NamedPipeServerStream есть параметр с описательным именем maxNumberOfServerInstances.Потрясающие.Но что это значит?

Документация MSDN также полезна при объяснении:

Максимальное количество экземпляров сервера с одинаковым именем.

Хорошо.Это все еще не говорит мне, что это делает для меня или как я его использую.Было бы разумно, если бы NamedPipeServerStream также принял некоторого делегата для «запуска этого кода, когда я получаю соединение», поэтому каждый «экземпляр сервера» затем будет запускать этот код.Но это не тот случай.

1 Ответ

2 голосов
/ 11 января 2012

Это странный аргумент, вы найдете немного больше информации об этом в документации по базовой функции Windows API (CreateNamedPipe) . Каналы используют очень ценный ресурс для конвейерных буферов, они выделяются из невыгружаемого пула памяти ядра. Я думаю этот аргумент помогает Windows оптимизировать использование пула. Как именно это делается, безнадежно не документировано.

Идеальное число для одной службы, которая принимает несколько клиентских подключений, равно 1. Вы можете увеличить ее, только если хотите запустить несколько служб, которые выполняют одну и ту же работу. Это довольно редко.

...