Непрерываемый поток

Discussion in 'WASM.WIN32' started by Mika0x65, Sep 23, 2007.

  1. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    Joined:
    Jul 30, 2005
    Messages:
    1,384
    Мое почтение всем.

    Есть программа, в ней несколько потоков. Я модифицирую какое-то количество памяти в программе. Необходимо, чтобы до конца этой операции не происходило переключение на другие потоки. Как лучше всего это провернуть? Заморозить все потоки я не имею права. Повышать приоритет потока тоже нежелательно. Есть еще какие-нибудь способы (включая грязные хаки) это сделать?

    Заранее благодарен.
     
  2. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    объекты синхронизации не подойдут?
    Те же крит секции например.
     
  3. asmfan

    asmfan New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2006
    Messages:
    1,004
    Location:
    Abaddon
    "Другие потоки" свои же? Если нет, то никак ибо нарушается принцип многозадачности /в данном случае многопоточности/ OC Win в данном случае. Выход - лезть в ядро.
     
  4. HoBleen

    HoBleen New Member

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    77
    Если нельзя морозить, то поставить им THREAD_PRIORITY_IDLE можно?) Или повысить себя до реалтайма.
     
  5. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    лучше и то и другое вместе )
     
  6. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    Joined:
    Jul 30, 2005
    Messages:
    1,384
    Всем спасибо :).

    В общем, я попробую критические секции (это больше всего, судя по всему, подходит) и посмотрю, насколько это скажется на общей производительности. Если будет тормозить -- буду пробовать предложенные варианты. Или уточнение какое напишу.
     
  7. Mental_Mirror

    Mental_Mirror New Member

    Blog Posts:
    0
    Joined:
    May 7, 2007
    Messages:
    431
    Ну вообще надо бы Рихтера читануть разок =)
     
  8. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    Joined:
    Jul 30, 2005
    Messages:
    1,384
    Mental_Mirror
    Каюсь, еще не читал. Я пока не определился, что первым изучить изнутри: *nix или Win. Или и то и другое вместе, но это маловероятно.
     
  9. k3internal

    k3internal New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    607
    Mika0x65
    Хз. Но могу предложить. Пишешь драйвер. Заказываешь DPC, и там делаешь своё грязное дело. Если уж в юзермоде никак нельзя это сделать., хотя не могу понять почему.
     
  10. keksn

    keksn New Member

    Blog Posts:
    0
    Joined:
    Sep 24, 2007
    Messages:
    5
    А не проще ли махинаций с приоритетами пройтись по всем SuspendThread, а после операции ResumeThread? Не вижу причин не морозить всё.
     
  11. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    Joined:
    Jul 30, 2005
    Messages:
    1,384
    keksn
    Учитывая, что я внедряю свою библиотеку в онлайн-игру, морозить все потоки подряд несколько опасно. Хотя, критическая секция, как я понял, делает примерно то же самое.
     
  12. intel

    intel New Member

    Blog Posts:
    0
    Joined:
    Jan 9, 2005
    Messages:
    8
    Location:
    Russia
    Еще AWE можно попробовать.
     
  13. intel

    intel New Member

    Blog Posts:
    0
    Joined:
    Jan 9, 2005
    Messages:
    8
    Location:
    Russia
    тот который Advanced Windowing Extensions.
     
  14. keksn

    keksn New Member

    Blog Posts:
    0
    Joined:
    Sep 24, 2007
    Messages:
    5
    Mika0x65
    Заморозка будет недолгой.
     
  15. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    Joined:
    Jul 30, 2005
    Messages:
    1,384
    keksn
    Скорость выполнения меня волнует. Дело в том, что я использую SEH, который сам по себе не очень быстрый, при чем, возможно, вызываться мой SEH обработчик будет довольно часто. Поэтому мне надо быть очень быстрым.