Перейдите в файл package.json и добавьте нижнюю строку
"scripts": {
"start":"node ./node_modules/app.js"
}
. Примите и внесите изменения в свою героинскую игру
.Существует различие при использовании Рабочего потока для вызова синхронной версии, Вы свяжете один из потоков на блокирующемся вызове.
Принимая во внимание, что Начать методы не свяжут поток, но будут вместо этого использовать обратный вызов на соответствующем сигнале ввода-вывода, вызов назад будет затем работать на потоке от пула.
Я соглашаюсь с AnthonyWJones, предполагаю, что Ваш пул потоков имеет 10 потоков, но у Вас есть 100 достаточно пассивных клиентов. С асинхронными вызовами Вы можете BeginRead для каждых из них, и когда данные от кого-то будут готовы, это будет обработано одним из потоков пула. Но при попытке использовать QueueUserWorkItem, Вы запланируете получение данных только от 10 клиентов. И если они ничего не отправят через 1 час, то другие 90 клиентов никогда не будут получать шанс получить данные.
Я не действительно уверен, почему NetworkStream даже имеет BeginRead/Write, так как это в основном нарушает цель NetworkStream во-первых. При помощи Асинхронных методов Вы получаете более быстрый ответ, большую масштабируемость и уменьшенное потребление ресурсов.
Если Вы только когда-либо собираетесь иметь одно соединение за один раз, то не имеет значения очень при использовании потока пула потоков или нет, но если Вы принимаете много соединений затем, Вы определенно хотите использовать асинхронный.
Как другие указали, выделение другого потока к Вашему процессу повлияет на Вас при использовании синхронного метода, поскольку Вы увеличиваете число одновременных соединений.
Однако, если бы Вы знаете, что у Вас только когда-либо будет небольшое количество соединений, я сказал бы, что это становится промывкой, и необходимо выбрать метод, который является самым естественным для приложения.
В случае, где поток наверху незначителен, я ожидал бы, что эти два сценария будут терять значение как это.
Асинхронный:
Синхронный в другом потоке:
Единственная разница здесь - то, что шаг 4 от Асинхронного вызова становится шагом 1 в синхронном в другом случае потока.