Блогът на GunSmoker (преводи) Има ли Windows ограничение от 2000 нишки на процес

. когато промяната на нечий ум става толкова лесна, колкото програмирането на компютър, какво означава да си човек.

Има ли Windows ограничение от 2000 нишки на процес?

Обикновено ограничителният фактор е размерът на стека: Тази програма обикновено отпечатва стойност около 2 000 (приблизително: ако искате да повторите този експеримент, по-добре би било да стартирате програмата извън дебъгера; също така, стартирането на програмата на x64 ще ви даде напълно различни номера - поради смущения от 32-битовия емулационен слой).

Защо тя се предава на 2 000?

Но истинският въпрос, който възниква, когато някой попита, "Какъв е максималният брой нишки, които мога да създам" е: "Защо създавате ли толкова много нишки, че да се превърне в проблем? "

Моделът с един клиент, една нишка е добре известен с това, че не е мащабируем от около дузина клиенти. Ако ще обслужвате по-голям брой клиенти едновременно, тогава би било по-добре да използвате различен модел, където вместо да разпределяте нишка на клиента, просто създавате обект (някой ден ще помисля за двойствеността между конци и обекти). Windows ви предоставя I/O портове за завършване и пулове от нишки, за да ви помогне да преминете от клиентска нишка към клиентска задача.

Имайте предвид, че влакната не те ще помогнат много тук, защото влакното също има стек и почти винаги ограничителният фактор е стека.

Бележки на преводача:
1. Препоръчвам да прочетете друга статия на Марк Русинович.
2. Като цяло по темата за сървърните приложения и обслужването на клиенти препоръчвам отлична книга от небезизвестния Джефри Рихтер.
3. Надявам се, че не съм ви занимавал с бележките си:) Нещо, което те преодоляха в този пост. Обещавам да се опитам да ги сведе до минимум.