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

Тема в разделе "WASM.WIN32", создана пользователем Mika0x65, 23 сен 2007.

  1. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Мое почтение всем.

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

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

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    объекты синхронизации не подойдут?
    Те же крит секции например.
     
  3. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    "Другие потоки" свои же? Если нет, то никак ибо нарушается принцип многозадачности /в данном случае многопоточности/ OC Win в данном случае. Выход - лезть в ядро.
     
  4. HoBleen

    HoBleen New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    77
    Если нельзя морозить, то поставить им THREAD_PRIORITY_IDLE можно?) Или повысить себя до реалтайма.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    лучше и то и другое вместе )
     
  6. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Всем спасибо :).

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

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Ну вообще надо бы Рихтера читануть разок =)
     
  8. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Mental_Mirror
    Каюсь, еще не читал. Я пока не определился, что первым изучить изнутри: *nix или Win. Или и то и другое вместе, но это маловероятно.
     
  9. k3internal

    k3internal New Member

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

    keksn New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2007
    Сообщения:
    5
    А не проще ли махинаций с приоритетами пройтись по всем SuspendThread, а после операции ResumeThread? Не вижу причин не морозить всё.
     
  11. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    keksn
    Учитывая, что я внедряю свою библиотеку в онлайн-игру, морозить все потоки подряд несколько опасно. Хотя, критическая секция, как я понял, делает примерно то же самое.
     
  12. intel

    intel New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    8
    Адрес:
    Russia
    Еще AWE можно попробовать.
     
  13. intel

    intel New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    8
    Адрес:
    Russia
    тот который Advanced Windowing Extensions.
     
  14. keksn

    keksn New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2007
    Сообщения:
    5
    Mika0x65
    Заморозка будет недолгой.
     
  15. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    keksn
    Скорость выполнения меня волнует. Дело в том, что я использую SEH, который сам по себе не очень быстрый, при чем, возможно, вызываться мой SEH обработчик будет довольно часто. Поэтому мне надо быть очень быстрым.