PDA

Просмотр полной версии : Максимальное кол-во потокв?


Smapt
26.09.2008, 02:01
Сколько потоков максимум может создавать приложение в ХР/win2000/win2003 ???

P3L3NG
26.09.2008, 02:05
дефолтно вроде 10, но патчем расширяют до любого. у меня 1000 стоит

nikfm
26.09.2008, 02:18
Ищи патч разделе брут icq

Хозяин
26.09.2008, 02:26
win2003 энтерпрайз 2000 потоков

Smapt
27.09.2008, 00:50
дефолтно вроде 10, но патчем расширяют до любого. у меня 1000 стоит

Дефолтно 100 это точно, в ХР по крайней мере...


AciD_FreaK, спс

Chode
27.09.2008, 02:21
10 дефолтно в нормальной лицензионной винде =)
а максимально при патче вроде не ограничено как уж потянет машина

X-Venom
27.09.2008, 10:19
2000 и 2003 спокойно тянули 1500 потоков

SlyBit
27.09.2008, 18:00
Ограничения только в количестве свободной памяти.
На 10 потоков никак не может стоять ограничение для процесса, т.к. в одном из svchost.exe около 80 потоков, в winlogon.exe штук 30.
Следующий кусочек кода создает в моих системах около 2.3к потоков в своем процессе до тех пор, пока CreateThread не возвращает ERROR_NOT_ENOUGH_MEMORY:

#include <windows.h>
#pragma comment(linker, "/ENTRY:Entry")
#define _LOG_FILE_ "out.log"
HANDLE hFile = NULL;

VOID WINAPI Log(PCHAR msg,...)
{
char buff[1024] = "\0";
va_list mylist;
DWORD dwWrited = 0;

va_start(mylist, msg);
wvsprintf(buff, msg, mylist);
va_end(mylist);

if(!hFile || (hFile == INVALID_HANDLE_VALUE))
hFile = CreateFile(_LOG_FILE_, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, 0);

if(hFile != INVALID_HANDLE_VALUE)
WriteFile(hFile, buff, strlen(buff), &dwWrited, 0);
}

ULONG WINAPI Thread(PVOID pParam)
{
Log("Create: id=%i\r\n", GetCurrentThreadId());
Sleep(-1);
return 1;
}

VOID WINAPI Entry()
{
int i = 0;

for(i = 0; i < 10000; i++){
if(!CreateThread(NULL, 0, Thread, NULL, 0, NULL)) {
Log("CreateThread error %i\r\n", GetLastError());
break;
}
}
MessageBox(0, 0, 0, 0);

ExitProcess(0);
}
Давно качал "патч для винды", который якобы давал возможность создавать аж до 50! :D потоков, оказалась обычная малваря.

12usver12
27.09.2008, 18:28
наверно имеется ввиду не просто потоки а сетевые потоки в них ограничение 10 а можно пропатчить до 100

Smapt
27.09.2008, 18:33
12usver12, а какая разница между обычным и "сетевым" потоками???? и что это за потоки такие вообще? :)))

В ХР сп2 проф, без всяких патчей узаю 100 потоков без проблем)

Buffalon
27.09.2008, 18:44
Ставь много)))) , Винда тебе сама обрежет по самые яйца

-Case-
27.09.2008, 18:54
ТС, ты уже определись с потоками. О чем именно ты говоришь?
Есть вычислительные потоки, а есть tcp соединения, это разные вещи.
А то "ограничение на 10 потоков" в ХР, о котором тут говорят, это ограничение на 10 _полуоткрытых_ tcp соединений.

Smapt
27.09.2008, 21:36
-Case-, что ты понимаеш под вычислительными потоками и ТСР соединениями? Если в потоке создаётся сокет и устанавливается соеденение, это что-то меняет? таких потоков меньше что-ле работать может? Или я что-то не догоняю?

-Case-
27.09.2008, 22:25
Smapt, ты удивишься, но в однопоточном приложении может быть одновременно установлено несколько tcp сессий.
Много ли общего между понятиями "кот" и "ботинок"? Вроде бы не очень, даже если учесть что кот может нассать в ботинок. Так и здесь, вычислительный поток и tcp соединение это разные понятия из маленько разных областей, вообще говоря, даже если они где-то пересекаются.

Smapt
27.09.2008, 23:51
-Case-, удивился))) спасибо за разьеснения конечно, только изначально про ТСР некто не говорил)

-Case-
28.09.2008, 00:24
Да я тоже так понял, что ты не о tcp говорил, но все начали трындеть об ограничении на 10 потоков и посылать тебя за известным патчем, и я как-то засомневался :)