остановка/возврат потока или глобальный флаг. что быстрее?

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

  1. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    Оптимизирую сейчас один алгоритм на мультипроцессорность якобы. Конечно виндовозный планировщик в этом плане не супер, но другие варианты неподходят.

    Так вот. Урюк в том, что я буду раздавать N-ному кол-ву потоков данные на обработку, а после обработки каждый поток будет мне возвращать результат и ждать следующих данных для обработки.

    Следовательно, т.к. данных много, крутится эта система будет долго. И тут два варианта: я использую виндовозные функции подвешивания потока и возвращения в него, или же я использую глобальные флаги, а в каждом потоке делаю холостой цикл ожидания флага "на жри".

    Какой из этих вариантов меньше грузит процессор проверить вобщем-то достаточно просто, но мало ли кто-нибудь уже с этим сталкивался и даст точный ответ, сэкономив мне немного времени.

    Заранее спасибо.
     
  2. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    уже занимает лишнее процессорное врямя, которое могло бы быть использовано под исполнение другого потока.
     
  3. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Arisu
    В винде оптимальными будут стандартные функции синхронизации. SetEvent, WaitForSingleObject, WaitForMultipleObjects, etc...
     
  4. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Искпользуя г@вновозный слэнг, можно сказать, что виндовозные порты завершения
    и критические секции на синхронизацию общих данных - самое оно.