Заменить медленные функции Winapi своими

Тема в разделе "WASM.A&O", создана пользователем Llirik, 11 сен 2023.

  1. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Если смогу сделать, может и утечёт, но далеко не сразу, гыгы:dirol: За это время я смогу его изрядно побесить, как он и те, кто использовали его прогу там, где это было запрещено правилами, бесили меня
    --- Сообщение объединено, 13 сен 2023 ---
    Деньги тут не главное, главное смогу ли я написать более быстрый и умный алгоритм, и одолеть его прогу
     
  2. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    1. выделить много памяти через VirtualAlloc, самому помечать блоки занятыми / свободными.
    2. использовать createfiber
     
  3. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    У меня есть идея сделать что-то подобное, но менее радикальное потому, что если я ещё больше буду использовать памяти, то винда может просто не выдержать. Я и так сомневаюсь, что если я всё же смогу доделать прогу и начну тестить её по полной, выдержит ли винда:)
    Мне не нужно контролировать выполнение нитей. Проблема в том, что CreateThread занимает очень много времени в рекурсии. Но как от неё избавиться?:dash1:
     
  4. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    462
    Сделай пул потоков раза в два больше, чем ядер на машине. То, что у тебя было CreateThread теперь будет процедурой которая ищет свободный поток в пуле и если находит - пробуждает его передав задачу на исполнение. Если свободных потоков не находится - то уже текущий поток засыпает вешая своё пробуждение на событие изменения состояния пула после чего повторяет попытку захвата потока и т.д.
    P.S.
    Правда тут вроде бы возможен вариант бутылочного горлышка, когда реально пахать будет один поток, а остальные будут ждать освобождения свободного слота. Это опять таки зависит от алгоритма. Если там рекурсия, то можно выродиться в такой случай.
     
    Llirik нравится это.