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

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Smapt, 26 Sep 2008.

  1. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    Сколько потоков максимум может создавать приложение в ХР/win2000/win2003 ???
     
  2. P3L3NG

    P3L3NG Banned

    Joined:
    4 Jun 2008
    Messages:
    175
    Likes Received:
    204
    Reputations:
    11
    дефолтно вроде 10, но патчем расширяют до любого. у меня 1000 стоит
     
  3. nikfm

    nikfm Elder - Старейшина

    Joined:
    30 Apr 2006
    Messages:
    172
    Likes Received:
    36
    Reputations:
    4
    Ищи патч разделе брут icq
     
  4. Хозяин

    Хозяин Elder - Старейшина

    Joined:
    15 Mar 2006
    Messages:
    435
    Likes Received:
    404
    Reputations:
    110
    win2003 энтерпрайз 2000 потоков
     
    1 person likes this.
  5. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    Дефолтно 100 это точно, в ХР по крайней мере...


    AciD_FreaK, спс
     
  6. Chode

    Chode Elder - Старейшина

    Joined:
    20 Jul 2008
    Messages:
    164
    Likes Received:
    19
    Reputations:
    0
    10 дефолтно в нормальной лицензионной винде =)
    а максимально при патче вроде не ограничено как уж потянет машина
     
  7. X-Venom

    X-Venom Banned

    Joined:
    29 Apr 2008
    Messages:
    569
    Likes Received:
    365
    Reputations:
    21
    2000 и 2003 спокойно тянули 1500 потоков
     
  8. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    Ограничения только в количестве свободной памяти.
    На 10 потоков никак не может стоять ограничение для процесса, т.к. в одном из svchost.exe около 80 потоков, в winlogon.exe штук 30.
    Следующий кусочек кода создает в моих системах около 2.3к потоков в своем процессе до тех пор, пока CreateThread не возвращает ERROR_NOT_ENOUGH_MEMORY:
    Code:
    #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 потоков, оказалась обычная малваря.
     
  9. 12usver12

    12usver12 Elder - Старейшина

    Joined:
    12 Dec 2007
    Messages:
    50
    Likes Received:
    9
    Reputations:
    0
    наверно имеется ввиду не просто потоки а сетевые потоки в них ограничение 10 а можно пропатчить до 100
     
  10. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    12usver12, а какая разница между обычным и "сетевым" потоками???? и что это за потоки такие вообще? :)))

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

    Buffalon Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    Ставь много)))) , Винда тебе сама обрежет по самые яйца
     
  12. -Case-

    -Case- Member

    Joined:
    13 May 2008
    Messages:
    23
    Likes Received:
    5
    Reputations:
    0
    ТС, ты уже определись с потоками. О чем именно ты говоришь?
    Есть вычислительные потоки, а есть tcp соединения, это разные вещи.
    А то "ограничение на 10 потоков" в ХР, о котором тут говорят, это ограничение на 10 _полуоткрытых_ tcp соединений.
     
  13. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    -Case-, что ты понимаеш под вычислительными потоками и ТСР соединениями? Если в потоке создаётся сокет и устанавливается соеденение, это что-то меняет? таких потоков меньше что-ле работать может? Или я что-то не догоняю?
     
  14. -Case-

    -Case- Member

    Joined:
    13 May 2008
    Messages:
    23
    Likes Received:
    5
    Reputations:
    0
    Smapt, ты удивишься, но в однопоточном приложении может быть одновременно установлено несколько tcp сессий.
    Много ли общего между понятиями "кот" и "ботинок"? Вроде бы не очень, даже если учесть что кот может нассать в ботинок. Так и здесь, вычислительный поток и tcp соединение это разные понятия из маленько разных областей, вообще говоря, даже если они где-то пересекаются.
     
  15. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    -Case-, удивился))) спасибо за разьеснения конечно, только изначально про ТСР некто не говорил)
     
  16. -Case-

    -Case- Member

    Joined:
    13 May 2008
    Messages:
    23
    Likes Received:
    5
    Reputations:
    0
    Да я тоже так понял, что ты не о tcp говорил, но все начали трындеть об ограничении на 10 потоков и посылать тебя за известным патчем, и я как-то засомневался :)
     
    1 person likes this.